مقاله : توابع گرافیکی و استفاده از آنها ....

مقاله : توابع گرافیکی و استفاده از آنها .....

 

مطمئنا یکی از لذت بخش ترین و جذابترین قسمتهای برنامه نویسی ( برای بیشتر برنامه نویسان ) ، کار با توابع گرافیکی و ساخت ویرایشگرهای گرافیکی است ...

...

کار بر روی یک TImage :

نکات ابتدایی و مهم :

برای کار بر روی یک TImage ( کارهایی مثل رسم با موس و نوشتن و ... ) باید 2 تا از خصوصیات و امکانات TImage را بشناسید : 1. Brush و 2. Pen

عنصر Brush ( براش ) 2 امکان کارآمد دارند ، یکی Style و دیگری Color

Style درواقع نوع نمایش زمینه یک TImage است ، Color هم رنگ زمینه آن

 

عنصر Pen ( پن ) درواقع قلم شماست و با تنظیم خصوصیات آن میتوانید اندازه ، فونت و ... دلخواه خود را برای رسم و نوشتن به کار گیرید ...

 

تغییر رنگ زمینه یک TImage :

برای این کار باید مقدار Color عنصر Brush را برابر با رنگ مورد نظر قرار دهید :

کد:

Image.Canvas.Brush.Color := ClWhite;

با این کد رنگ زمینه Image به سفید تغییر می یابد ... ( فعلا بر روی یک TImage خالی و بدون عکس کار میکنیم )

 

تغییر رنگ یک Pixel یا ایجاد یک نقطه کوچک ! بر روی Image :

بدین منظور باید از دستور زیر استفاده نماییم :

کد:

Image.Canvas.Pixels[X, Y] := clRed;

توجه کنید که دستور [Canvas.Pixels[X, Y ، یک خروجی TColor است ، و میتوانید یک متغیر را برابر با آن قرار داده و رنگ پیکسل مورد نظر را دریافت نمایید ...

مقادیر X و Y ، مختصات پیکسلی هستند که میخواهیم رنگ آن را بدست آورده یا تغییر دهیم ، اگر قصد دارید که با کلیک موس بر روی Image ، رنگ پیکسلی که کلیک بر روی آن انجام گرفته ، تغییر کند باید دو متغیر برای X و Y در قسمت بالای فرم یا در Public یا ... تعریف کنید ( جایی که امکان استفاده از آنها در سایر Event ها هم باشد ) ، سپس در رویداد OnMouseMove مربوط به TImage ، این دو متغیر را با مقدارهای X و Y مربوط به مختصات موس مقداردهی کنید ، سپس در رویداد OnClick موس بر روی TImage و در کد مربوط به تغییر رنگ پیکسل ، میتوانید از متغیرهایی که تعریف کرده اید به عنوان X و Y ( مختصات نقطه کلیک شده ) استفاده کنید :

کد:

 

var

  Form1: TForm1;

  MX, MY : Integer;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.ImageClick(Sender: TObject);

begin

 Image.Canvas.Pixels[MX, MY]:= clRed;

end;

 

procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

begin

 MX := X;

 MY := Y;

end;

 

 

به جای کارهای بالا میتوانید از OnMouseDown استفاده نمایید ... !

 

آغاز رسم ...

رسم یک خط :

برای رسم یک خط ، باید از دستور LineTo استفاده کنیم ...

کد:

Image.Canvas.LineTo(X, Y);

بهتر است در هنگام استفاده از این توابع مدیریت صحیح و بهتری داشته باشیم ، به عنوان مثال برای این که با حرکت موس ، خطی بر روی یک TImage رسم کنیم ، باز هم به چند متغیر و چند رویداد نیازمندیم ...

توجه کنید که اگر تنها در رویداد OnMouseMove مربوط به Image از دستور LineTo استفاده کنید و مقادیر X و Y موس را به آن بدهید ، رسم خط از نقطه ( Pixel ) بالا و سمت چپ تصویر شروع شده و با حرکت موس ادامه می یابد ...

برای جلوگیری از این موضوع باید به صورت زیر عمل کنیم :

ابتدا یک متغیر در قسمت Public یا ... فرم تعریف میکنیم ، تا به وسیله آن مشخص کنیم که موس در حالت کلیک شده ( Down ) است یا نه و اگر جواب مثبت بود ، با حرکت موس ، رسم خط را شروع می نماییم ...

برای این کار ابتدا یک متغیر مثلا با نام MDown و از نوع Boolean تعریف نمایید ، سپس در رویداد OnMouseDown

/ 0 نظر / 105 بازدید