Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

Выручите с построением линии.   Найти похожие ветки 

 
Cr@sh   (2002-08-19 07:55) [0]

Добрый день, Уважаемые мастера.
Выручите, пожалуйста, напишите примерчик, как сделать следующее:
построить прямую, с помощью мышки, тем же способом что и в Paint`e, т.е. кликнул и потащил, а прямая тянется за мышкой, отпустил - прямая кончилась.
Очень срочно надо.
Заранее спасибо.


 
lenin   (2002-08-19 08:35) [1]

Вот один простенький вариант:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
StrPosX, StrPosY: integer;
PosX, PosY: integer;
Down: boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StrPosX:=X;
StrPosY:=Y;
PosX:=x;
PosY:=y;
Down:=true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Down then
with Canvas do
begin
Canvas.Pen.Mode:=pmNot;
Canvas.MoveTo(StrPosX,StrPosY);
Canvas.LineTo(PosX,PosY);
PosX:=X;
PosY:=Y;
Canvas.MoveTo(StrPosX,StrPosY);
Canvas.LineTo(PosX,PosY);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Down:=false;
with Canvas do
begin
Pen.Mode:=pmCopy;
Pen.Color:=clBlue;
MoveTo(StrPosX,StrPosY);
LineTo(X,Y);
end;

end;


end.


 
Cr@sh   (2002-08-19 08:58) [2]

>lenin
Спасибо ОГРОМНОЕ, хоть кто-то нормально ответил...
И еще раз спасибо.


 
Cr@sh   (2002-08-19 09:21) [3]

>lenin
А как сделать, чтобы рисовалась не просто прямая, а допустим пунктирная?
Заранее спасибо.


 
Lord Warlock   (2002-08-19 09:29) [4]

допустим на радиокнопки

case Radoigroup1.ItemIndex of
0:Canvas.Pen.Style:=psSolid;
1:Canvas.Pen.Style:=psDash;
end;


Поподробнее можно посмотреть в справке на TPen


 
lenin   (2002-08-19 09:34) [5]

А ты поставь вместо Pen.Mode:=pmNot следующее
Pen.Style:=psDot;
Pen.Mode:=pmMergePenNot;
P.S. У меня там небольшая ошибка вместо:
with Canvas do
begin
Canvas.Pen.Mode:=pmNot;
Canvas.MoveTo(StrPosX,StrPosY);
Canvas.LineTo(PosX,PosY);
PosX:=X;
PosY:=Y;
Canvas.MoveTo(StrPosX,StrPosY);
Canvas.LineTo(PosX,PosY);
end;

надо:
with Canvas do
begin
Pen.Mode:=pmNot;
MoveTo(StrPosX,StrPosY);
LineTo(PosX,PosY);
PosX:=X;
PosY:=Y;
MoveTo(StrPosX,StrPosY);
LineTo(PosX,PosY);
end;


 
Cr@sh   (2002-08-19 09:38) [6]

Еще раз огромное всем спасибо.


 
Cr@sh   (2002-08-19 10:04) [7]

Ув. мастера, извините за назойливость, но, ответьте еще на такой вопрос:
Вобщем если поставить
Pen.Style:=psDot;
Pen.Mode:=pmMergePenNot;

и начать рисовать на пустой канве, то все канает,
а вот если перед этим на канве уже есть построенный график и у имэйджа стоит транспарент тру, то тогда постоянно рисуется простая прямая.


 
lenin   (2002-08-19 10:26) [8]

А можно код посмотреть.


 
Cr@sh   (2002-08-19 11:19) [9]

12 форм по 5000-6000 строк в 3 из них и все имеют отношение к построению :(
Вобщем это геологическая программа построения разрезов, там вводятся куча отметок, а прога должна все это переварить и построить.
Я там сделал так, что есть 2 имэйджа один под другим верхний транспарент, а нижний с сеткой(сетка не должна выводится на печать).
Когда начинаешь строить линии открывается форма выбора вида линии, а затем уже строишь.
Но проблема в том, что если не вводить в самом начале значения и на строить ничего, то прямые строятся как надо, но при этом имэйдж становится не транспарент. А если все ввести и попытаться строить линии, то они все солид :(. Может попытаться во время построения линий отключать транспарент, а затем снова включать? Так че делать?


 
Lord Warlock   (2002-08-20 09:12) [10]


> Cr@sh © (19.08.02 11:19)


А КРЕДО спереть и не мучаться слабо? :)


 
Cr@sh   (2002-08-20 11:21) [11]

>Lord Warlock
Кстати на счет КРЕДО, где его надыбать халявный можно?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
6-95933
sanilo
2002-06-19 12:51
2002.08.29
Одноранговая сеть;)


3-95696
AlexSam
2002-08-08 17:03
2002.08.29
TitleBand в QReport


1-95847
просто панк
2002-08-17 01:50
2002.08.29
Rich Edit


14-95942
Александр
2002-08-02 12:48
2002.08.29
Совместимость ПО с Windows XP


1-95809
аааааа
2002-08-20 05:17
2002.08.29
Как подключиться к удаленной БД MySQL?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский