PDA

View Full Version : رسم اشکال همانند لایه های فتوشاپ



Mah
چهارشنبه 26 فروردین 1388, 19:34 عصر
سلام.
من می خواهم یک برنامه گرافیکی بنویسم که در آن :
1- اشیاء دایره -خط- مستطیل - چند ضلعی بکشم .
2- پس از کشیدن نیز هر شکل همانند یک شی قابل دیدن و تغییر رنگ و جابهجایی باشد .
همانند لایه ها در فتوشاپ لطفا راهنمایی نمائید .
؟؟؟

در ضمن من یک چنین کد نوشتم اما شی بر روی فرم دیده نمی شود .


procedure TFMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
r : TRect;
begin
if(BtnLine.Down)then
begin
bLine:=true;
ms:=TShape.Create(Self);
end;
if(bLine) then
begin
ms.Shape:=stRectangle;
ms.Height:=2;
ms.Pen.Color:=clBlack;
ms.Brush.Color:=clBlack;
ms.Left:=X;
ms.Top:=Y;
ms.Width:=3;
ms.Show;
cLine:=cLine+1;
ms.Name:='Line'+IntToStr(cLine);
ListBox1.Items.Add(ms.Name);
end;
end;
و

procedure TFMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if(bLine) then
begin
ms.Shape:=stRectangle;
ms.Height:=2;
ms.Brush.Color:=clBlack;
ms.Width:=abs(x-ms.Left);
end;
Label2.Caption:='X:'+IntToStr(x)+'-Y:'+IntToStr(Y);
end;

منتظرم .

Felony
چهارشنبه 26 فروردین 1388, 21:11 عصر
شما برای اینکه به خصوصیات هر کردوم از اشکال کشیده شده به طور مستقل دسترسی داشته باشد باید اونها رو در زمان کشیدن به عنوان یه شئ مستقل بسازیدشون .

یه چیز تو این مایه ها ، خودتون تغییرش بدید :

* x1 و y1 متغییرهای سراسری از نوع Integer هستند .


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:=x;
y1:=y;
end;


procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Sh:TShape;
begin
Sh:=TShape.Create(Form1);
Sh.Parent:=Form1;
Sh.Top:=y1;
Sh.Left:=x1;
Sh.Height:=y-y1;
Sh.Width:=x-x1;
end;

vcldeveloper
پنج شنبه 27 فروردین 1388, 02:36 صبح
در ضمن من یک چنین کد نوشتم اما شی بر روی فرم دیده نمی شود .
چون Parent شی ساخته شده را مقداردهی نکردید. در کد موجود در پست شماره 2 نحوه مقداردهی به Parent یک شی نمایش داده شده.

MohsenB
پنج شنبه 03 اردیبهشت 1388, 11:28 صبح
فکر کنم همه چیزت درست بود فقط Parent رو مشخص نکرده بودی.