Текущий архив: 2002.08.29;
Скачать: CL | DM;
Вниз
Выручите с построением линии. Найти похожие ветки
← →
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;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.007 c