کامپوننت برای نمایش اطلاعات گرافیکی در دلفی. ارائه با موضوع "نمایش اطلاعات گرافیکی در دلفی." اطلاعات مختصری از نظریه

کار با گرافیکدر دلفی فقط خطوط و نقاشی نیست، بلکه چاپ نیز هست اسناد متنی. بنابراین در دلفی در محل کاربا گرافیکباید کمی وقت بگذاری کار با گرافیک در دلفیشامل دسترسی به بوم - ویژگی Canvas اجزاء است. بوم دلفیاین یک بوم است که به برنامه نویس اجازه می دهد تا به هر یک از نقاط آن (پیکسل) دسترسی داشته باشد و مانند یک هنرمند، آنچه را که لازم است نمایش دهد. البته، پیکسل به پیکسل برای کار با گرافیکدر دلفی ضروری نیست، سیستم دلفی قدرتمند را فراهم می کند ابزارهای گرافیکی، کار برنامه نویس را آسان می کند.

هنگام کار با گرافیک در دلفی، برنامه نویس یک طرح کلی (بوم، بوم - ویژگی) در اختیار دارد بوماجزای دلفی)، مداد (خاصیت خودکار)، قلم مو (ویژگی Brush) جزء یا شیئی که قرار است روی آن نقاشی کنید. روی مداد خودکارو برس ها قلم مومی توانید رنگ (ویژگی Color) و سبک (ویژگی Style) را تغییر دهید. دسترسی به فونت ها توسط ویژگی canvas فراهم می شود فونت. این ابزارها به شما امکان نمایش متن و نمودارهای کاملاً پیچیده از محتوای ریاضی و مهندسی و همچنین نقشه ها را می دهند. بعلاوه، کار با گرافیکبه شما امکان می دهد از چنین منابعی در دلفی استفاده کنید پنجره هامانند فایل های گرافیکی و ویدئویی

البته همه اجزای موجود در دلفی این ویژگی ها را ندارند. روی زبانه اضافییک جزء تخصصی قرار دارد TImage، به طور خاص برای طراحی، بلکه دارایی طراحی شده است بومبرای مثال، کامپوننت هایی مانند ListBox، ComboBox، StringGrid و همچنین خود Form که اجزای ما را قرار می دهد، داشته باشید! علاوه بر این، برای چاپ اسناد، دلفی به ویژگی Canvas یک شی مانند چاپگر دسترسی دارد.

ویژگی اصلی شیء مانند Canvas Delphi است پیکسل هانوع TColor، یعنی آرایه ای دو بعدی از نقاط (پیکسل) است که با رنگ آنها مشخص می شود. طراحی روی بوم در لحظه اختصاص یک رنگ مشخص به هر نقطه از بوم اتفاق می افتد. هر پیکسل را می توان به هر پیکسلی که برای آن موجود است اختصاص داد رنگ ویندوز. برای مثال اجرای دستور

Image1.Canvas.Pixels:=clRed;

منجر به رسم یک نقطه قرمز با مختصات می شود. با انتساب معکوس می توانید رنگ یک پیکسل را دریابید:

Color:=Image1.Canvas.Pixels.

تایپ کنید TColorبه عنوان یک عدد صحیح طولانی (LongInt) تعریف می شود. چهار بایت آن حاوی اطلاعاتی در مورد نسبت رنگ های آبی (B)، سبز (G) و قرمز (R) است. در سیستم هگزادسیمال به نظر می رسد: $00BBGGRR. نسبت هر رنگ می تواند از 0 تا 255 متغیر باشد. بنابراین، برای نمایش حداکثر نقطه قرمز، باید به آن اختصاص داده شود. رنگ 000000 FF.
برای رنگ های استاندارد در دلفی مجموعه ای از ثابت های متنی تعریف شده است. می توانید آن را با باز کردن ویژگی Color، به عنوان مثال، همان Form در Object Inspector مشاهده کنید.

جدول زیر حاوی برخی از ویژگی ها و روش های بوم است:

Procedure TextOut(X, Y: Integer; پایانمتن: WideString)؛
خروجی رشته ای تولید می کند متنشروع از (X، Y) - پیکسل بالای سمت چپ متن.
Property TextWidth( varمتن: رشته): عدد صحیح;
شامل طول رشته است متندر پیکسل
ویژگی TextHeight( varمتن: رشته): عدد صحیح;
شامل ارتفاع خط است متندر پیکسل
Procedure MoveTo (X, Y: Integer);
موقعیت را به پیکسل با آدرس (X, Y) منتقل می کند.
Procedure LineTo(X, Y: Integer);
یک خط مستقیم از نقطه موقعیت فعلی به پیکسل با آدرس (X, Y) رسم می کند. آدرس (X, Y) به نقطه موقعیت فعلی تبدیل می شود.
رویه FillRect( پایان Rect: TRect)؛
یک مستطیل را پر می کند راستروی بوم با استفاده از قلم مو فعلی. از جمله می توان از آن برای پاک کردن بخشی از تصویر روی بوم استفاده کرد.

بیایید تنها با استفاده از این روش های بوم، برنامه ای برای یک تصویر روی بوم کامپوننت بنویسیم تصویرمتنی که در کامپوننت وارد می شود یادداشت:

اولین کاری که انجام می دهیم این است که هنگام شروع برنامه، متغیرها را مقداردهی اولیه کنیم. لازم است اندازه منطقه ترسیم را تعیین کنیم (یک متغیر جهانی Rect از نوع TRect برای این کار ایجاد خواهیم کرد) و رنگ پس زمینه را تنظیم کنیم. تصویرسفید:

روش TForm1.FormCreate(فرستنده: TObject);
شروع
Rect.Left:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
پایان;

سپس یک قاب در طرفین تصویر بکشید:

روش TForm1.page;
شروع
باتصویر 1. بوم انجام دادن
شروع
MoveTo(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0، Image1.Height-1);
LineTo(0, 0);
پایان;
پایان;

بیایید امتحان کنیم چه اتفاقی افتاده است. همه چیز کار می کند، اما فریم هنوز نمایش داده نشده است. بنابراین، اجازه دهید یک رویه اضافه کنیم صفحهدر رویه FormCreate. الان قشنگه در ادامه خواهیم نوشت رویه سادهپاک کردن، پاک کردن تصویر قبل از هر به روز رسانی تصویر باید آن را فراخوانی کرد، در غیر این صورت تصاویر قبلی و بعدی همپوشانی خواهند داشت.

روش TForm1.clearing;
شروع
Image1.Canvas.FillRect(Rect); //مستطیل راستبا رنگ سفید پر می شود و تصویر پاک می شود.
پایان;

حالا نوبت خود روال خروجی متن است. بیایید شروع به کشیدن متن از نقطه (3، 3) کنیم - گوشه سمت چپ بالای صفحه، با یک فرورفتگی جزئی 3 پیکسل. هر خط بعدی با ارتفاع خط جبران می شود:

روش TForm1.prn;
var i: عدد صحیح
شروع
باتصویر 1. بوم انجام دادن
برای i:=1 به Memo1.Lines.Count انجام دادن
TextOut(3، 3+(i-1)*TextHeight("A")، Memo1.Lines);
پایان;

اکنون همه چیز برای خروجی متن آماده است. ما این کار را با استفاده از رویداد OnChange انجام خواهیم داد:

روش TForm1.Memo1Change(فرستنده: TObject);
شروع
پاکسازی؛
prn;
صفحه;
پایان;

و در نهایت، روش تغییر اندازه فونت:

روش TForm1.Edit1Change(فرستنده: TObject);
شروع
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change (فرستنده)؛
پایان;

می توانید این برنامه را برای چاپ متن تغییر دهید. برای کار با چاپگر باید ماژول را وصل کنید چاپگرها:

واحدواحد 1؛

رابط

استفاده می کند
ویندوز، پیام‌ها، SysUtils، انواع، کلاس‌ها، گرافیک‌ها، کنترل‌ها، فرم‌ها،
دیالوگ ها، StdCtrls، چاپگرها ;

هنگام کار با چاپگر به عنوان یک بوم، روش برای شروع چاپ فراخوانی می شود BeginDoc، سپس سند خروجی می شود، با فراخوانی روش چاپ کامل می شود EndDoc:

Printer.BeginDoc;
باچاپگر. بوم انجام دادن
شروع
... چاپ سند ...
پایان;
Printer.EndDoc;

عرض و ارتفاع وب چاپگر از طریق ویژگی ها در دسترس است Printer.PageWidthو Printer.PageHeight. می‌توانید چاپ را در یک صفحه به پایان برسانید و با استفاده از روش شروع به چاپ روی صفحه دیگر کنید Printer.NewPage.

لیست اجزای نمایشگر اطلاعات گرافیکی

برای نمایش اطلاعات گرافیکی، کتابخانه دلفی اجزایی را ارائه می دهد که فهرست آنها در جدول 4.1 آورده شده است.

جدول 4.1 اجزای نمایش اطلاعات گرافیکی پیکتوگرام

جزء

صفحه

شرح

تصویر

برای نمایش گرافیک ها: آیکون ها، بیت مپ ها و متافیل ها استفاده می شود.


PaintBox (پنجره برای طراحی)

برای ایجاد ناحیه ای روی فرم که می توانید در آن نقاشی کنید استفاده می شود.


DrawGrid (جدول نقشه ها)

برای نمایش داده های غیر متنی در سطرها و ستون ها استفاده می شود.


نمودار (نمودار و نمودار)

کامپوننت متعلق به خانواده کامپوننت های TChart است که برای ایجاد نمودارها و نمودارها استفاده می شود.


علاوه بر این، می‌توانید اطلاعات گرافیکی را روی سطح هر گرافیک Display بر روی بوم نمایش داده و وارد کنید.

بوم بومجزء نیست، بنابراین به طور دقیق نباید آن را در محدوده این کتاب در نظر گرفت. اما از آنجایی که بسیاری از مؤلفه ها، به ویژه فرم های خاص، دارای یک طرح کلی هستند و طرح کلی امکان نمایش اطلاعات گرافیکی مختلف را فراهم می کند، همچنان توصیه می شود اطلاعات اولیه در مورد طرح کلی ارائه شود.

بوم ناحیه ای از یک جزء است که می توانید تصاویر تمام شده را روی آن بکشید یا نمایش دهید. این شامل ویژگی ها و روش هایی است که گرافیک دلفی را بسیار ساده می کند. تمام فعل و انفعالات پیچیده با سیستم برای کاربر پنهان است، بنابراین شخصی که اصلاً در گرافیک کامپیوتری تجربه ندارد، می تواند در دلفی نقاشی کند.

هر نقطه از طرح دارای مختصاتی است ایکسو Y. سیستم مختصات بوم، مانند جاهای دیگر در دلفی، منشأ خود را در گوشه سمت چپ بالای بوم دارد. هماهنگ كردن ایکسهنگام حرکت از چپ به راست و مختصات افزایش می یابد Y- هنگام حرکت از بالا به پایین مختصات بر حسب پیکسل اندازه گیری می شوند. پیکسل کوچکترین عنصر سطح طراحی است که می توان آن را دستکاری کرد. مهمترین ویژگی یک پیکسل رنگ آن است.

بوم دارای خاصیت است پیکسل ها. این ویژگی یک آرایه دو بعدی است که مسئولیت رنگ های بوم را بر عهده دارد. مثلا، بوم. پیکسل هابا رنگ پیکسل 10 از سمت چپ و 20th از بالا مطابقت دارد. می‌توانید با آرایه‌ای از پیکسل‌ها مانند هر ویژگی رفتار کنید: رنگ را با دادن یک مقدار جدید به پیکسل تغییر دهید یا رنگ آن را از مقدار ذخیره شده در آن تعیین کنید. مثلا، بوم. پیکسل:=0یا بوم. پیکسل:=clBlack- این برای تنظیم پیکسل روی سیاه است.

ویژگی پیکسل هامی توان از آن برای طراحی روی بوم استفاده کرد. بیایید سعی کنیم نمودار پیکسل به پیکسل یک سینوسی را روی طرح کلی فرم رسم کنیم. برای این کار در فرم رویداد handler OnPaint(نقاشی) می توانید کد زیر را وارد کنید:

TForm1. FormPaint(فرستنده: TObject);

var,Y:واقعی; // مختصات تابع,PY: longint; // مختصات پیکسل

شروع:=clWhite;

برای PX: = 0 بهپهنای مشتری انجام دادن

(X آرگومان گراف است،

:=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - مختصات پیکسل،

: =trunc (ClientHeight - (Y+1) *ClientHeight/2);

(رنگ انتخاب شده را تنظیم می کند

پیکسل (درباره روشنایی). پیکسل: = 0;

پایان;

این برنامه آزمایشی را اجرا کنید و نتیجه را در شکل 4.1 a مشاهده خواهید کرد. نمودار موج سینوسی معلوم شد، اگرچه خیلی خوب نیست، زیرا به نقاط جداگانه - پیکسل تقسیم می شود.

بوم - شی کلاس TCanvasدارای روش های زیادی است که به شما امکان می دهد نمودارها، خطوط، اشکال را با استفاده از ویژگی رسم کنید خودکار- پر. این ویژگی یک شی است که به نوبه خود دارای تعدادی ویژگی است. یکی از آنها ملکی است که قبلاً می شناسید رنگ- رنگی که نقاشی با آن اعمال می شود. ملک دوم - عرض(عرض خط). عرض بر حسب پیکسل مشخص شده است. عرض پیش فرض 1 است.

ویژگی سبکنوع خط را تعیین می کند. این ویژگی می تواند مقادیر زیر را داشته باشد:

بوم دارای خاصیت است PenPosنوع TPoint(سانتی متر .). این ویژگی موقعیت فعلی قلم را در مختصات بوم تعیین می کند. حرکت قلم بدون کشیدن خط، یعنی. تغییر دادن PenPos، تولید شده به روش بوم MoveTo (X,Y).اینجا ( X، Y) -مختصات نقطه ای که قلم به سمت آن حرکت می کند. این نقطه فعلی تبدیل به نقطه شروع، که از آن روش می شود LineTo (X,Y)شما می توانید یک خط با مختصات به یک نقطه رسم کنید ( X,Y).در این حالت، نقطه فعلی به نقطه پایان خط و یک فراخوان جدید منتقل می شود LineToیک نقطه از این نقطه فعلی جدید ترسیم خواهد کرد.

بیایید سعی کنیم نمودار سینوس مثال قبل را با قلم رسم کنیم. در این مورد، کنترل کننده رویداد فرم OnPaintممکن است به نظر برسد:

روش TForm1. FormPaint(فرستنده: TObject);

var,Y:واقعی; // مختصات تابع,PY: longint; // مختصات پیکسل

شروع: =clWhite;. MoveTo(0,ClientHeight div 2);

برای PX: = 0 بهپهنای مشتری انجام دادن

(X آرگومان گراف است،

مربوط به پیکسل با مختصات РХ):=PX*4*Pi/ClientWidth;:=Sin(X);

(PY - مختصات پیکسل،

مربوط به مختصات Y):=trunc(ClientHeight - (Y+1) *ClientHeight/2);

(یک خط روی نمودار کشیده شده است). LineTo (PX، PY)؛

می توانید نتیجه برنامه را در این نسخه در شکل 4.1 b مشاهده کنید. همانطور که می بینید، کیفیت گرافیک به طور قابل توجهی بهبود یافته است.

قلم می تواند نه تنها خطوط مستقیم، بلکه اشکال را نیز ترسیم کند. برای فهرست کامل روش‌های بوم که از قلم استفاده می‌کنند، به راهنمای داخلی دلفی مراجعه کنید. در حال حاضر، به عنوان مثال، ما فقط یکی از آنها را ارائه می دهیم - بیضی، که یک بیضی یا دایره می کشد. به عنوان اعلام شده است

روشبیضی (X1، Y1، X2، Y2: عدد صحیح)؛

پارامترها کجا هستند X1، X2، Y1، Y2مختصات یک مستطیل را که یک بیضی یا دایره را توصیف می کند، تعیین کنید. مثلا اپراتور

بیضی(10، 40، 20، 50);

دایره ای به قطر 10 و مختصات مرکزی (15، 45) رسم می کند.

در حالت کلی، ارقام خالی نیستند، بلکه با استفاده از ویژگی canvas پر می شوند قلم مو- قلم مو. ویژگی قلم مویک شی است که به نوبه خود دارای تعدادی ویژگی است. ویژگی رنگرنگ پر را مشخص می کند. ویژگی سبکالگوی پر کردن (سایه زدن) را تعریف می کند. مقدار پیش فرض سبکبرابر است bs جامدکه به معنی رنگ آمیزی است رنگ.

در قلم خودکاریک ملک دیگر وجود دارد که ما هنوز در نظر نگرفته ایم. این ملک است حالت(حالت). مقدار پیش فرض حالت = pmCopy. به این معنی که خطوط با رنگ مشخص شده در ویژگی ترسیم می شوند رنگ. اما حالت های دیگری نیز امکان پذیر است که در آنها فقط رنگ در نظر گرفته نمی شود رنگ، و همچنین رنگ پیکسل های پس زمینه مربوطه. جالب ترین این حالت ها است pmNotXor- علاوه بر پس زمینه با استفاده از OR انحصاری معکوس. اگر این حالت تنظیم شده باشد، با کشیدن دوباره همان شکل در همان مکان روی بوم، تصویر ترسیم شده قبلی حذف می شود و رنگ های پیکسلی که قبل از اولین تصویر از شکل بودند، بازیابی می شوند.

این ویژگی از حالت pmNotXorمی توان از آن برای ساخت انیمیشن های ساده استفاده کرد. کافی است چیزی بکشید، سپس آنچه را که کشیده اید پاک کنید، آن را کمی تغییر دهید - و به نظر می رسد که نقاشی زنده می شود.

سعی کنید خودتان یک انیمیشن ساده بسازید - یک دایره متحرک. یک برنامه جدید راه اندازی کنید و به پیاده سازیدرج آگهی

X,Y: عدد صحیح

این متغیرهای جهانی را معرفی می کند ایکسو Y- مختصات تصویر فعلی

در رویداد فرم OnPaintدرج عبارات

قلم مو. رنگ:=clWhite;:=clWhite;. خودکار. حالت:=pmNotXor;

اولین مورد از این عملگرها رنگ قلم مو را روی سفید قرار می دهد قلم مو. این بدان معنی است که دایره شما داخل آن سفید رنگ می شود. عملگر دوم رنگ پس زمینه سطح فرم را سفید قرار می دهد.

عملگر سوم حالت قلم را تنظیم می کند pmNotXor، که به شما امکان می دهد قبل از کشیدن تصویر جدید، تصویر قدیمی را پاک کنید.

حتی ساده ترین انیمیشن نیاز به همگام سازی دارد. در غیر این صورت سرعت حرکت با سرعت کامپیوتر مشخص خواهد شد. بنابراین، جزء را به فرم منتقل کنید تایمر- تایمر از صفحه سیستم. این جزء در بخش 5.7 توضیح داده شده است .

شما می توانید آن را در آنجا تماشا کنید توصیف همراه با جزئیات. در حال حاضر، ویژگی آن را تنظیم کنید فاصلهبرای مثال برابر با 30 (این زمان نوردهی بر حسب میلی ثانیه است، اما به موقعسرعت شاتر طولانی تر خواهد بود - بخش 5.7 را ببینید) و ویژگی را تنظیم کنید فعال شدبرابر نادرست(این بدان معنی است که تایمر به طور خودکار هنگام راه اندازی برنامه شروع نمی شود).

در رویداد کنترل کننده این کامپوننت OnTimerدرج عبارات

// تصویر قبلی را پاک کنید. بیضی (X-5, Y, X+5, Y-1Q);(X);

// یک تصویر جدید بکشید. بیضی (X-5، Y، X+5، Y-10)؛

// با رسیدن به انتهای فرم توقف کنید

اگر(X >= ClientWidth-20) سپس. فعال: = false;

اولین مورد از این عملگرها یک دایره را در جایی که قبلاً ترسیم شده بود ترسیم می کند. تصویر قبلی را پاک می کند

آخرین عملگر تصویر را در لبه فرم متوقف می کند.

حالا یک دکمه به فرم اضافه کنید دکمهو عملگرها را در کنترل کننده کلیک روی آن قرار دهید

X: =10;: =100;. بیضی (X-5، Y، X+5، Y-10)؛. فعال: =true;

دو عملگر اول مختصات اولیه دایره را مشخص می کنند. عملگر سوم دایره را در موقعیت شروع خود می کشد و عملگر چهارم تایمر را شروع می کند.

برنامه را پخش کنید، آن را اجرا کنید، روی دکمه کلیک کنید. تصویری از دایره ای را مشاهده خواهید کرد که در سراسر شکل از چپ به راست حرکت می کند. و سپس از تخیل خود استفاده کنید و این برنامه نه چندان جالب را به چیزی هیجان انگیزتر تبدیل کنید.

بوم می تواند نه تنها تصاویر ایجاد شده توسط برنامه، بلکه تصاویر ذخیره شده در فایل های گرافیکی را نیز نمایش دهد. فقط خود بوم روشی برای بارگذاری تصویر از یک فایل ندارد. بنابراین، فایل باید در شیء گرافیکی دیگری بارگذاری شود که بتواند اطلاعات فایل های گرافیکی را دریافت کند. و سپس با استفاده از روش canvas تصویر را از این شی به بوم بازنویسی کنید قرعه کشی. شرح آن:

Draw(X, Y: Integer; Graphic: TGraphic);

در اینجا پارامترها هستند ایکسو Yتعیین مختصات گوشه سمت چپ بالای قرارگیری تصویر روی بوم، a گرافیک- یک شی که اطلاعات را ذخیره می کند. چنین شی می تواند، برای مثال، یک شی از نوع باشد TBitMap، طراحی شده برای ذخیره ماتریس های بیت. بیایید ببینیم که این همه در عمل چگونه به نظر می رسد.

یک برنامه جدید باز کنید، یک جزء را روی فرم بکشید OpenPictureDialogاز صفحه دیالوگ ها (این جزئی از گفتگو برای باز کردن فایل های گرافیکی است - بخش 8.2 را ببینید ) و دکمه دکمه. محل OpenPictureDialogدر هر جایی از فرم، چون این جزء غیر بصری است، دکمه را در پایین فرم قرار دهید. کد زیر را به کنترل کننده کلیک دکمه خود اضافه کنید:

روش TForm1. Button1Click(فرستنده: TObject);

var: TBitMap;

// انتخاب کاربر فایل گرافیکی

اگر OpenPictureDialog1. اجرا کردن سپس

// یک شی BitMap از نوع TBitMap ایجاد کنید: =TBitMap. ايجاد كردن؛

// تصویر را به بوم فرم منتقل کنید. Draw (10، 10، BitMap)؛

//از بین بردن شی BitMap. رایگان؛

پایان;

این کد یک شی موقت از نوع ایجاد می کند TBitMapبا نام بیت مپ. سپس گفتگوی باز کردن یک فایل گرافیکی فراخوانی می شود OpenPictureDialog1و اگر کاربر فایلی را انتخاب کرده باشد، در آن دانلود می شود بیت مپروش LoadFromFile. سپس با استفاده از روش قرعه کشیتصویر بارگذاری شده روی بوم در ناحیه با مختصات گوشه سمت چپ بالا (10،10) کپی می شود. پس از این شی موقت بیت مپنابود می شود.

برنامه خود را اجرا کنید و روی دکمه آن کلیک کنید. خواهید دید که می توانید هر نوع فایل گرافیکی را آپلود کنید. bmpو روی طرح کلی فرم نمایش داده خواهد شد (شکل 4.2 a را ببینید). می توانید فایل های گرافیکی را در پوشه Images پیدا کنید. در دلفی 5 و 4 معمولاً در یک فهرست قرار دارد. \فایلهای برنامه\فایلهای مشترک\Borland Shared. در دلفی 3 در یک فهرست قرار دارد. \program files\Borland\Delphi 3 و در Delphi 1 - در دایرکتوری Delphi 16. در پوشه Images، به طور خاص، یک زیر شاخه \Images\Splash\16Color\ وجود دارد که فایل بارگذاری شده در مثال شکل را ذخیره می کند. 4.2

اپلیکیشن خوبی برای مشاهده فایل های گرافیکی ساخته اید. اما اکنون بیایید سعی کنیم ایراد اصلی آن را ببینیم. بدون بستن برنامه خود، به برنامه دیگری بروید، مثلاً به دلفی بازگردید. سپس، بدون انجام کاری در آنجا، به برنامه در حال اجرا خود برگردید. اگر پنجره برنامه ای که وارد آن شده اید، پنجره برنامه شما را به طور کامل مسدود کرده است، پس از بازگشت به آن، می بینید که تصویر موجود در پنجره ناپدید شده است. اگر پنجره برنامه شما فقط تا حدی همپوشانی داشت، پس از بازگشت به برنامه خود، ممکن است نتیجه ای مشابه آنچه در شکل 4.2 ب نشان داده شده است، مشاهده کنید.

مشاهده می کنید که اگر پنجره برنامه دیگری به طور موقت با پنجره برنامه شما همپوشانی داشته باشد، تصویر کشیده شده روی طرح کلی فرم خراب می شود. بیایید ببینیم چگونه می توانیم این نقص را از بین ببریم.

اگر پنجره ای بسته شده باشد و تصویر خراب شده باشد، سیستم عامل به برنامه می گوید که چیزی در محیط تغییر کرده است و برنامه باید اقدامات لازم را انجام دهد. به محض اینکه نیاز به به روز رسانی پنجره باشد، یک رویداد برای آن ایجاد می شود OnPaint. در کنترلر این رویداد (در مورد ما، رویداد فرم)، باید تصویر را دوباره ترسیم کنید.

ترسیم مجدد قابل انجام است راه های مختلفبسته به کاربرد در مثال ما، امکان تعریف یک متغیر وجود دارد بیت مپ(اپراتور var BitMap: TBitMap) فراتر از روش فوق، یعنی. با قرار دادن مستقیم آن در بخش، این متغیر را جهانی کنید پیاده سازی. اپراتور بیت مپ. رایگانمی تواند به کنترل کننده رویداد فرم منتقل شود OnDestroy، که با بسته شدن برنامه اتفاق می افتد. سپس در طول کل اجرای برنامه شما یک کپی از تصویر در کامپوننت خواهید داشت بیت مپو شما فقط باید وارد کنترل کننده رویداد شوید OnPaintفقط یک عملگر وجود دارد:

Draw (10، 10، BitMap)؛

این کار را انجام دهید و خواهید دید که تصویر روی فرم به دلیل همپوشانی پنجره ها خراب نمی شود.

علاوه بر روش در نظر گرفته شده قرعه کشیطرح کلی روش کپی نیز دارد CopyRect:

CopyRect(Dest: TRect; Canvas: TCanvas; منبع: TRect);

متد پارامتر مشخص شده را کپی می کند منبعناحیه تصویر در بوم منبع تصویر بومبه پارامتر مشخص شده مقصدمساحت این بوم تایپ کنید TRect، مناطق مستطیلی را مشخص می کند منبعو مقصد، قبلاً در بخش 3.2 توضیح داده شده است .

مثلا اپراتور

CopyRect (MyRect2، Bitmap. Canvas، MyRect1);

به طرح کلی فرم در منطقه کپی می کند MyRect2تصویر از منطقه MyRect1بوم جزء بیت مپ.

روش کپی CopyRectدر حالت مشخص شده توسط ویژگی انجام می شود CopyMode. به طور پیش فرض این ویژگی دارای مقدار است cmSrcCopy، که به سادگی به معنای جایگزینی تصویری است که قبلاً در آن منطقه وجود داشت مقصد، به تصویر کپی شده. سایر مقادیر ممکن CopyModeبه شما اجازه می دهد تصاویر را با هم ترکیب کنید، اما در نظر گرفتن آنها خارج از محدوده این کتاب است.

ما خود را به این اطلاعات اولیه در مورد نمایش اطلاعات گرافیکی روی بوم محدود می کنیم. در بخش 3.2 اطلاعاتی در مورد خروجی متن به طرح کلی ارائه شد. به طور کلی، طرح کلی - شی پیچیده، که خواص و روش های بسیار بیشتری دارد. اما این نیاز به بحث گسترده ای دارد که از حوصله این کتاب خارج است. کتاب بعدی از مجموعه همه چیز درباره دلفی این مسائل را با جزئیات بیشتری بررسی خواهد کرد.

یک جزء پنجره که دارای ویژگی است بوم- بوم.

اجزای Image و PaintBox

اجزاء تصویرو PaintBoxهمانطور که در بخش 4.2 توضیح داده شد، سطح محدودی را با بوم نشان می دهد که می توان روی آن تصاویر نوشت . در این مورد، جزء PaintBoxبه بیان دقیق، در مقایسه با ترسیم فرم روی بوم چیز جدیدی ارائه نمی دهد. طراحی روی PaintBoxبه جای یک فرم، هیچ مزیتی ندارد، به جز، شاید، کمی تسکین در چیدمان یک یا چند نقشه در ناحیه پنجره.

اما علاوه بر این قابلیت ها، جزء تصویرویژگی هایی وجود دارد که به شما امکان می دهد با آنها کار کنید انواع مختلففایل های گرافیکی پشتیبانی از سه نوع فایل - ماتریس بیت، آیکون ها و متافایل ها. هر سه نوع فایل تصاویر را ذخیره می کنند. تفاوت فقط در نحوه ذخیره آنها در فایل ها و در ابزار دسترسی به آنها نهفته است. ماتریس بیت (فایل با پسوند . bmp) رنگ هر پیکسل در تصویر را نمایش می دهد. در این حالت، اطلاعات به گونه ای ذخیره می شود که هر کامپیوتری بتواند تصویری را با وضوح و تعداد رنگ های مربوط به پیکربندی خود نمایش دهد.

پیکتوگرام ها (فایل هایی با پسوند . ico) ماتریس های بیت کوچکی هستند. آنها به طور گسترده ای برای تعیین نمادهای برنامه، در دکمه های سریع، در آیتم های منو، در لیست های مختلف استفاده می شوند. روش ذخیره سازی تصاویر در آیکون ها مشابه ذخیره سازی اطلاعات در ماتریس های بیتی است، اما تفاوت هایی نیز وجود دارد. به طور خاص، نماد را نمی توان مقیاس کرد، اندازه ای که در آن ایجاد شده است باقی می ماند.

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

جزء تصویربه شما امکان می دهد اطلاعات موجود در فایل های گرافیکی از همه نوع مشخص شده را نمایش دهید. این با خاصیت آن حاصل می شود تصویر- تایپ شی تصویر.

شکل 4.3پنجره ویرایشگر تصویر


برای آشنایی با این ویژگی، یک برنامه جدید باز کنید و یک جزء را روی فرم بکشید تصویر. آن را بکشید یا خاصیت آن را تنظیم کنید تراز کردنبرابر alClientبه طوری که کل ناحیه مشتری فرم را اشغال کند. روی دکمه بیضی کنار ملک کلیک کنید تصویردر پنجره Object Inspector یا به سادگی روی آن دوبار کلیک کنید تصویر. پنجره ویرایشگر تصویر در مقابل شما باز می شود (شکل 4.3) و به شما امکان می دهد تا در ویژگی بارگیری کنید. تصویربرخی از فایل های گرافیکی (دکمه بارگذاری)، و همچنین فایل باز شده را با نام جدید یا در یک فهرست جدید ذخیره کنید. برای بارگذاری فایل گرافیکی روی Load کلیک کنید. پنجره ای برای باز کردن یک فایل گرافیکی مشاهده خواهید کرد که در شکل 4.4 نشان داده شده است، همانطور که مکان نما را در لیست فایل های گرافیکی حرکت می دهید، تصاویر موجود در آنها در پنجره سمت راست نمایش داده می شوند و در بالای آنها اعدادی هستند که اندازه تصویر را مشخص می کنند. . شما می توانید هر نوع فایل گرافیکی مورد نیاز خود را انتخاب کنید. به شما یادآوری می کنیم که می توانید فایل های گرافیکی ارائه شده با دلفی را در دایرکتوری Images پیدا کنید. در دلفی 5 و 4 معمولاً در یک فهرست قرار دارد. \فایلهای برنامه\فایلهای مشترک\Borland Shared. در دلفی 3 در یک فهرست قرار دارد. \program files\Borland\Delphi 3 و در دلفی 1 - در دایرکتوری دلفی 16. پس از بارگیری فایل، در پنجره ویرایشگر تصویر و در جزء خود، روی OK کلیک کنید. تصویرتصویری که انتخاب کرده اید نمایش داده می شود. می توانید برنامه خود را راه اندازی کنید و آن را تحسین کنید. با این حال، شما در حال حاضر تصویر را حتی بدون اجرای برنامه می بینید.

هنگامی که در طول فرآیند طراحی، یک تصویر را از یک فایل در یک جزء بارگذاری می کنید تصویر، نه تنها آن را نمایش می دهد، بلکه در برنامه ذخیره می کند. این به شما این امکان را می دهد که برنامه خود را بدون فایل گرافیکی جداگانه تحویل دهید. با این حال، همانطور که در ادامه خواهیم دید، در تصویرهمچنین می توانید فایل های گرافیکی خارجی را در حین اجرای برنامه بارگذاری کنید.

بیایید به بررسی ویژگی های مولفه بازگردیم تصویر.

اگر ملک را تنظیم کنید اندازه اتوماتیک V درست است، واقعی، سپس اندازه جزء تصویربه طور خودکار با اندازه تصویر قرار داده شده در آن تنظیم می شود. اگر ملک اندازه اتوماتیکنصب شده در نادرست، پس ممکن است تصویر در مولفه قرار نگیرد یا برعکس، مساحت مولفه ممکن است بسیار بزرگتر از مساحت تصویر باشد.

ملک دیگر - کش آمدنبه شما این امکان را می دهد که نه کامپوننت را به اندازه تصویر، بلکه تصویر را با اندازه آن تنظیم کنید. نصب اندازه اتوماتیک V نادرست، اندازه جزء را کشیده یا کوچک کنید تصویرو نصب کنید کش آمدن V درست است، واقعی. خواهید دید که نقشه کل منطقه جزء را اشغال می کند، اما از آنجایی که بعید است به طور واقعی ابعاد را تعیین کند. تصویردقیقاً متناسب با اندازه تصویر، تصویر تحریف می شود. نصب کش آمدن V درست است، واقعیممکن است فقط برای برخی از الگوها منطقی باشد، اما برای تصاویر نه. ویژگی کش آمدنروی تصاویر نمادهایی که اندازه آنها قابل تغییر نیست تأثیر نمی گذارد.

ویژگی - مرکز، تنظیم شده است درست است، واقعی، تصویر را بر روی منطقه متمرکز می کند تصویر، اگر اندازه مؤلفه بزرگتر از اندازه تصویر باشد.

بیایید یک ملک دیگر را در نظر بگیریم - شفاف(شفافیت). اگر شفافبرابر است درست است، واقعی، سپس تصویر در تصویرشفاف می شود. این می تواند برای همپوشانی تصاویر روی هم استفاده شود. جزء دوم را روی فرم قرار دهید تصویرو تصویر دیگری را در آن بارگذاری کنید. فقط سعی کنید عکسی با طرح کلی و پراکنده بگیرید. برای مثال، می‌توانید از میان آنهایی که معمولاً روی دکمه‌ها قرار می‌گیرند، عکس بگیرید، مثلاً یک فلش (فایل.\فایل‌های برنامه\فایل‌های مشترک\borland shared\images\buttons\arrow1l. bmp). مال خودت را جابجا کن تصویربه طوری که آنها با یکدیگر همپوشانی دارند و در مجموعه اجزای بالایی قرار دارند شفافبرابر درست است، واقعی. خواهید دید که تصویر بالا دیگر تصویر پایین را مبهم نمی کند. یکی از کاربردهای احتمالی این ویژگی، همپوشانی روی کتیبه های تصویری است که به صورت ماتریس بیت ساخته شده اند. این کتیبه ها را می توان با استفاده از برنامه ویرایشگر تصویر ساخته شده در دلفی ایجاد کرد.

لطفا توجه داشته باشید که ملک شفاففقط ماتریس های بیت را تحت تاثیر قرار می دهد. در این حالت، رنگ پیکسل پایین سمت چپ ماتریس بیت به طور پیش فرض شفاف می شود (یعنی با رنگ تصویر واقع در زیر آن جایگزین می شود).

ما بارگذاری یک تصویر از یک فایل را در طول فرآیند طراحی پوشش دادیم. اما ملک تصویرهمچنین سازماندهی تبادل با فایل های گرافیکی از هر نوع را در طول اجرای برنامه آسان می کند. برای توضیح تکنیک چنین تبادلی، ابتدا باید ملک را با جزئیات بیشتری در نظر بگیریم تصویر.

این ویژگی یک شی است که به نوبه خود دارای ویژگی های فرعی است که به شیء گرافیکی ذخیره شده اشاره می کند. اگر در تصویریک ماتریس بیت ذخیره می شود و با ویژگی نشان داده می شود تصویر بیت مپ. اگر یک نماد ذخیره شده باشد، توسط ویژگی به آن اشاره می شود تصویر آیکون. متافیل ذخیره شده با ویژگی مشخص می شود تصویر متافیل. در نهایت، یک شی گرافیکی از هر نوع با ویژگی نشان داده می شود تصویر گرافیک.

یک شی تصویرو خواص آن بیت مپ, آیکون, متافیلو گرافیکروش های خواندن و نوشتن فایل را داشته باشید LoadFromFileو ذخیره در فایل:

روش LoadFromFile( پایاننام فایل: رشته);

روشذخیره در فایل( پایاننام فایل: رشته);

برای خواص تصویر بیت مپ, تصویر آیکونو تصویر متافیلفرمت فایل باید با کلاس شی مطابقت داشته باشد: ماتریس بیت، نماد، متافایل. هنگام خواندن یک فایل در ملک تصویر گرافیکفایل باید در فرمت متافایل باشد. و برای خود شی تصویرروش های خواندن و نوشتن به طور خودکار با نوع فایل تنظیم می شوند. اجازه دهید این موضوع را با یک مثال توضیح دهیم.

بیایید برنامه ای شبیه به مثال مشاهده فایل های گرافیکی مورد بحث در بخش 4.2 بسازیم. برای تنوع، می توانید آن را با استفاده از چیزی غیر از دکمه کنترل کنید دکمه، و منو. یک جزء را روی فرم قرار دهید تصویر. آن را بکشید یا خاصیت آن را تنظیم کنید تراز کردنبرابر alClientبه طوری که کل ناحیه مشتری فرم را اشغال کند. مولفه گفتگوی باز کردن فایل گرافیکی را به فرم بکشید OpenPictureDialog(به بخش 8.2 مراجعه کنید ). یک جزء منوی اصلی را نیز روی فرم قرار دهید منوی اصلی(به بخش 6.1 مراجعه کنید ) و یک بخش را در آن تنظیم کنید - File. در کنترلر این بخش، عبارت را بنویسید

(OpenPictureDialog1.Execute) سپس. تصویر LoadFromFile(.FileName);

این اپراتور یک دیالوگ را برای باز کردن یک فایل گرافیکی فراخوانی می کند (شکل 4.4 را ببینید) و آن را در کامپوننت بارگذاری می کند. تصویر 1تصویر از یک فایل انتخاب شده توسط کاربر (شکل 4.5 را ببینید). علاوه بر این، فایل می تواند از هر نوع باشد: ماتریس بیت، نماد یا متافیل.

شکل 4.5تصویر در کامپوننت تصویرماتریس بیت (a) و پیکتوگرام (6)



در این نرم افزار روش LoadFromFileاعمال شده به تصویر 1. تصویر. اگر فقط فایل‌های ماتریس بیتی باز شوند، می‌توان عملگر بارگذاری فایل را با آن جایگزین کرد

تصویر بیت مپ LoadFromFile(.FileName);

برای پیکتوگرام ها می توان از عملگر استفاده کرد. تصویر آیکون. LoadFromFile(.FileName);

و برای متافایل ها - اپراتور. تصویر متافیل. LoadFromFile(.FileName);

یا. تصویر گرافیک. LoadFromFile(.FileName);

اما در تمامی این موارد، اگر فرمت فایل با فرمت مورد نظر مطابقت نداشته باشد، خطا رخ می دهد. روش به طور مشابه کار می کند ذخیره در فایلبا تفاوتی که برای تصویرو یا به تصویر گرافیکاین یک تصویر با هر فرمتی را در یک فایل ذخیره می کند. به عنوان مثال، اگر برنامه خود را با یک گفتگو گسترش دهید SavePictureDialog(به بخش 8.2 مراجعه کنید ، وارد بخش Save As در منو شده و اپراتور را در کنترلر آن قرار دهید

SavePictureDialog1. اجرا کردن سپس. تصویر SaveToFile (SavePictureDialog1. FileName);

سپس کاربر می تواند تصویری با هر فرمتی را در یک فایل با نام جدید ذخیره کند. فقط در این مورد، برای جلوگیری از سردرگمی در آینده، پسوند فایل ذخیره شده باید همچنان با فرمت تصویر ذخیره شده مطابقت داشته باشد.

اگر اپراتور ذخیره را با آن جایگزین کنید، این برنامه برای تصاویر با هر فرمتی کاملاً یکسان کار می کند

تصویر گرافیک. SaveToFile(.FileName);

با استفاده از اموال تصویر گرافیک. و اگر فرمت آنچه در کامپوننت ذخیره می شود را می دانید تصویرتصاویر، سپس می توانید روش را اعمال کنید ذخیره در فایلبه خواص تصویر بیت مپ, تصویر آیکونو تصویر متافیل.

برای همه اشیاء در نظر گرفته شده تصویر, تصویر بیت مپ, تصویر آیکونو تصویر متافیلروش هایی برای تخصیص مقادیر شی تعریف شده است:

Assign(منبع: TPersistent);

با این حال، برای بیت مپ, آیکونو متافیلشما فقط می توانید مقادیر اشیاء همگن را اختصاص دهید: به ترتیب، ماتریس های بیت، آیکون ها، متافایل ها. در هنگام تلاش برای تخصیص مقادیر به اشیاء ناهمگن یک استثنا ایجاد می شود EConvertError. یک شی تصویر- جهانی، می توان مقادیر اشیاء هر یک از سه کلاس دیگر را به آن اختصاص داد. و معنی تصویرفقط می توان به یک شی اختصاص داد که نوع آن با نوع شی ذخیره شده در آن مطابقت دارد.

روش اختصاص دهیدهمچنین می تواند برای تبادل تصاویر با بافر Clipboard استفاده شود. مثلا اپراتور

اختصاص دادن(تصویر1.تصویر);

تصویر ذخیره شده در کلیپ بورد را در کلیپ بورد ذخیره می کند تصویر 1. اپراتور مشابه

برنامه تصویر گرافیکی دلفی

تصویر 1. تصویر اختصاص دادن (Clipboard)؛

خواندن در تصویر 1یک تصویر در کلیپ بورد علاوه بر این، می تواند هر تصویر و حتی متن باشد.

فقط باید هنگام کار با کلیپ بورد به خاطر داشته باشید که در اپراتور جایگذاری کنید استفاده می کندپیوند ماژول شما به ماژول کلیپبرد. دلفی به طور خودکار این پیوند را درج نمی کند.

بازگشت به ویژگی های جزء تصویر، می توانیم یک اشکال ذاتی در برنامه آزمایشی خود را که در شکل 4.5 نشان داده شده است توجه کنیم هنگام بارگیری تصاویر مختلف، اندازه پنجره برنامه ممکن است خیلی کوچک باشد و سپس شما فقط بخشی از تصویر یا خیلی بزرگ را خواهید دید. سپس تصویر به شکل غیرجذابی در گوشه سمت چپ بالای فرم قرار می گیرد و فضای خالی زیادی باقی می ماند. با استفاده از خواص می توان این عیب را برطرف کرد ارتفاع(ارتفاع) و عرض(عرض) جزء تصویر. با ملک اندازه اتوماتیکنصب شده در درست است، واقعیابعاد تصویربه طور خودکار به اندازه تصویر آپلود شده تنظیم می شوند. و از این ابعاد می توان برای تغییر اندازه فرم متناسب با آن استفاده کرد. به عنوان مثال، کد قبلی برای بارگذاری یک تصویر از یک فایل را می توان با کد زیر جایگزین کرد:

OpenPictureDialog1. اجرا کردن سپس

شروع. تصویر LoadFromFile(.FileName); ClientHeight: = Image1. قد + 10;. بالا:=فرم1. ClientRect. بالا

+ (Form1. ClientHeight - Image1. Height) div 2;. ClientWidth:=Image1. عرض + 10;. سمت چپ: = Form1. ClientRect. ترک کرد

+ (Form1. ClientWidth - Image1. Width) div 2;

پایان;

این کد اندازه ناحیه مشتری فرم را کمی بزرگتر از اندازه مؤلفه تعیین می کند. تصویر 1، که به نوبه خود به لطف ویژگی با اندازه تصویر سازگار می شوند اندازه اتوماتیک. این تغییرات را در برنامه خود ایجاد کنید، آن را اجرا کنید و ببینید که فرم به طور خودکار با اندازه تصویر آپلود شده سازگار می شود.

مولفه شکل

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

نمونه هایی از این فرم ها در شکل 4.7 نشان داده شده است

شکل 4.7نمونه های کامپوننت شکل


یکی دیگر از ویژگی های ضروری کامپوننت این است قلم مو(قلم مو). این ویژگی یک شی از نوع است TBrush، که دارای تعدادی ویژگی فرعی است، به ویژه: رنگ ( قلم مو. رنگ) و سبک ( قلم مو. سبک) شکل را پر کنید. پر کردن در برخی مقادیر سبکشما می توانید در شکل 4.7 سومین ویژگی خاص جزء را ببینید شکل - خودکار(قلم) که سبک خط را تعریف می کند. این ملک مانند ملک است قلم مو، قبلاً در بخش 4.2 مورد بحث قرار گرفته است . می توانید داده های مرجع در مورد این ویژگی ها را در فصل 10* بیابید.

جزء نمودار

حالا بیایید به کامپوننت نگاه کنیم چارت سازمانی. این جزء به شما امکان می دهد نمودارها و نمودارهای مختلفی بسازید که بسیار چشمگیر به نظر می رسند (شکل 4.8). جزء چارت سازمانیدارای خواص، روش ها، وقایع بسیاری است، به طوری که اگر همه آنها را در نظر می گرفتیم، باید یک فصل کامل را به این موضوع اختصاص دهیم. بنابراین، ما خود را به در نظر گرفتن ویژگی های اصلی محدود می کنیم چارت سازمانی. بقیه موارد را می توانید در راهنمای داخلی دلفی بیابید یا فقط با آزمایش نمودارها آنها را امتحان کنید.

جزء چارت سازمانیظرفی از اشیا است سلسلهنوع TChartSeries- مجموعه ای از داده ها با سبک های مختلف نمایش مشخص می شود. هر جزء ممکن است شامل چندین سری باشد. اگر می خواهید یک نمودار نمایش دهید، هر سری با یک منحنی در نمودار مطابقت دارد. اگر می خواهید نمودارها را نمایش دهید، برای برخی از انواع نمودارها می توانید چندین سری مختلف را روی هم قرار دهید، برای برخی دیگر (مانند نمودار دایره ای) احتمالاً زشت به نظر می رسد. با این حال، در این مورد نیز می توانید برای یک جزء تنظیم کنید چارت سازمانیچندین سری از داده های یکسان با انواع نمودارهای مختلف. سپس با فعال کردن یکی از آنها در هر بار، می توانید انتخابی از نوع نموداری که داده های مورد نظر او را نمایش می دهد، در اختیار کاربر قرار دهید.

یک یا دو جزء (اگر می خواهید شکل 4.8 را تکرار کنید) قرار دهید چارت سازمانیروی فرم و به ویژگی هایی که در Object Inspector باز می شوند نگاه کنید. در اینجا به توضیح برخی از آنها می پردازیم.

با کلیک بر روی دکمه سمت راست ماوس، تعیین می‌کند که آیا کاربر می‌تواند بخش مشاهده‌شده نمودار را در حین اجرا اسکرول کند. مقادیر ممکن: pmNone - پیمایش ممنوع است، pmHorizontal، pmVertical یا pmBoth - پیمایش به ترتیب فقط در جهت افقی، فقط در جهت عمودی یا در هر دو جهت مجاز است.

به کاربر اجازه می‌دهد تا مقیاس تصویر را در حین اجرا تغییر دهد و قطعات نمودار یا نمودار را با مکان‌نمای ماوس برش دهد (شکل 4.8 b زیر لحظه مشاهده یک قطعه از نمودار را نشان می‌دهد که به طور کامل در شکل 4.8 a ارائه شده است).

عنوان نمودار را مشخص می کند.

برچسب را برای نمودار تعریف می کند. هیچ کدام به صورت پیش فرض متن امضا توسط ویژگی فرعی Text تعیین می شود.

یک حاشیه در اطراف نمودار تعریف می کند.

افسانه نمودار فهرستی از نمادها است.

MarginLeft، MarginRight، MarginTop، MarginBottom

مقادیر حاشیه چپ، راست، بالا و پایین.

BottomAxis، LeftAxis، RightAxis

این ویژگی ها به ترتیب ویژگی های محورهای پایین، چپ و راست را تعیین می کنند. تنظیم این ویژگی ها برای نمودارها و برخی از انواع نمودارها منطقی است.

LeftWall، BottomWall، BackWall

این ویژگی ها به ترتیب ویژگی های لبه های چپ، پایین و پشت ناحیه نمایش سه بعدی نمودار را تعیین می کنند (شکل 4.8 a، نمودار پایین را ببینید).

لیست سری های داده نمایش داده شده در کامپوننت.

نمایش نمودار سه بعدی را فعال یا غیرفعال می کند.

ویژگی های نمایشگر سه بعدی

مقیاس سه بعدی (برای شکل 4.8 این ضخامت نمودار و عرض نوارهای نمودار است).


در کنار بسیاری از ویژگی های فهرست شده در Object Inspector دکمه هایی با بیضی وجود دارد که به شما امکان می دهد یک صفحه از ویرایشگر نمودار را فراخوانی کنید - یک پنجره چند صفحه ای که به شما امکان می دهد تمام ویژگی های نمودارها را تنظیم کنید. ویرایشگر نمودار را نیز می توان با دوبار کلیک بر روی کامپوننت فراخوانی کرد چارت سازمانییا با کلیک راست بر روی آن و انتخاب دستور Edit Chart از منوی پاپ آپ.

اگر می خواهید برنامه نشان داده شده در شکل 4.8 را دوباره تولید کنید، روی مولفه بالا دوبار کلیک کنید. چارت سازمانی. شما به پنجره ویرایشگر نمودار (شکل 4.9) به صفحه نمودار که دارای چندین تب است هدایت می شوید. اول از همه، شما به تب Series در آن علاقه مند خواهید شد. بر روی دکمه افزودن کلیک کنید - یک سری اضافه کنید. شما به پنجره ای هدایت می شوید (شکل 4.10) که در آن می توانید نوع نمودار یا نمودار را انتخاب کنید. در این مورد، Pie - a Pie chart را انتخاب کنید. با استفاده از تب Titles می توانید عنوان نمودار را تنظیم کنید، تب Legend به شما امکان می دهد پارامترهایی را برای نمایش افسانه نمودار (فهرست نمادها) تنظیم کنید یا آن را به طور کلی از صفحه حذف کنید، تب Panel ظاهر پانل را تعیین می کند. که نمودار نمایش داده می شود، تب 3D به شما این فرصت را می دهد که ظاهر نمودار خود را تغییر دهید: شیب، تغییر، ضخامت و غیره.

هنگامی که در ویرایشگر نمودار کار می کنید و یک نوع نمودار را انتخاب کرده اید، اجزاء چارت سازمانیفرم شما ظاهر خود را با داده های مشروط وارد شده در آن نشان می دهد (شکل 4.11 را ببینید).

شکل 4.10انتخاب نوع نمودار در ویرایشگر نمودار


بنابراین، می توانید بلافاصله نتیجه اعمال گزینه های مختلف در برنامه خود را مشاهده کنید که بسیار راحت است.

صفحه Series که دارای تعدادی تب نیز می باشد به شما امکان انتخاب می دهد ویژگی های اضافینمایش سری به طور خاص، برای نمودار دایره ای در برگه Format، فعال کردن گزینه دایره ای مفید است، که تضمین می کند در هر اندازه ای از مؤلفه، چارت سازمانینمودار را به شکل دایره نمایش دهید. در برگه علامت‌ها، دکمه‌های گروه Style تعیین می‌کنند که چه چیزی روی برچسب‌های مربوط به بخش‌های جداگانه نمودار نوشته می‌شود: ارزش - مقدار، درصد - درصد، برچسب - نام داده‌ها و غیره. در مثال شکل 4.8، دکمه درصد فعال است و در تب General، یک قالب درصدی تنظیم شده است تا اطمینان حاصل شود که فقط مقادیر صحیح نمایش داده می شوند.

در صورت تمایل می توانید به این کامپوننت اضافه کنید چارت سازمانییک سری مشابه دیگر با کلیک بر روی دکمه Clone در تب Series صفحه نمودار، و سپس برای این سری جدید، روی دکمه Change کلیک کنید و نوع نمودار دیگری را انتخاب کنید، به عنوان مثال، Bar. البته دو تا انواع متفاوتنمودارها در یک تصویر بد به نظر می رسند. اما می‌توانید نشانگر این سری جدید را در تب Series خاموش کنید و سپس به کاربر اجازه دهید یک یا نوع دیگری از نمایش نمودار را انتخاب کند (ما در زیر نشان خواهیم داد که چگونه این کار انجام می‌شود).

از ویرایشگر نمودار خارج شوید، جزء پایینی برنامه خود را انتخاب کنید چارت سازمانیو با استفاده از Diagram Editor تنظیمات تنظیمات را برای آن تکرار کنید. در این حالت، اگر می خواهید دو منحنی روی نمودار نمایش داده شود، باید دو سری را مشخص کنید و نوع نمودار خطی را انتخاب کنید. از آنجایی که ما در مورد نمودارها صحبت می کنیم، می توانید از زبانه های Axis و Walls برای مشخص کردن مختصات محورها و لبه های سه بعدی نمودار استفاده کنید.

این برای طراحی است ظاهربرنامه به پایان می رسد. تنها چیزی که باقی می ماند نوشتن کدی است که داده هایی را که می خواهید نمایش دهید را مشخص می کند. برای کاربرد آزمایشی، اجازه دهید برخی از داده های ثابت را در نمودار دایره ای، و توابع سینوس و کسینوس را در نمودارها تنظیم کنیم.

برای تنظیم مقادیر نمایش داده شده باید از متدهای سری استفاده کنید سلسله. بیایید فقط روی سه روش اصلی تمرکز کنیم.

روش پاک کردنیک سری از داده های وارد شده قبلی را پاک می کند.

روش اضافه کردن:

(Const AValue: Double؛ Const ALabel: String;: TColor)

به شما امکان می دهد یک نقطه جدید به نمودار اضافه کنید. پارامتر AValueمربوط به ارزش افزوده، پارامتر است یک برچسب- نامی که بر روی نمودار و در افسانه نمایش داده می شود، یک رنگ- رنگ پارامتر یک برچسب- اختیاری است، می توان آن را خالی تنظیم کرد: "".

روش AddXY:(Const AXValue، AYValue: Double; ALabel: String؛ AColor: TColor)

به شما امکان می دهد یک نقطه جدید به نمودار تابع اضافه کنید. گزینه ها AXValueو AYValueبا آرگومان و تابع مطابقت دارد. گزینه ها یک برچسبو یک رنگهمانند روش اضافه کردن.

بنابراین، رویه بارگیری داده ها در مثال ما می تواند به صورت زیر باشد:

155;=251;=203;=404;

var: کلمه؛

شروعسری 1 انجام دادن

شروع;(A1، "Workshop 1"، clYellow);(A2، "Workshop 2"، clBlue);(A3، "Workshop 3"، clRed);(A4، "Workshop 4"، clPurple);

پایان;. روشن؛. پاک کردن؛

برای i: =0 به 100 انجام دادن

شروع. AddXY (0.02*Pi*i، sin (0.02*Pi*i)، ""، clRed)؛. AddXY (0.02*Pi*i، cos (0.02*Pi*i)، ""، clBlue)؛

اگر به عنوان مثال، داده های نمایش داده شده در نمودار را داده اید، دو سری سری 1و سری 4انواع متفاوت - پایو بار، سپس می توانید رویه ای را معرفی کنید که نوع نمودار را با توجه به درخواست کاربر تغییر می دهد. این رویه را می توان وارد یک رویداد کرد OnClickیک دکمه، یک فرمان منو، یا، به عنوان مثال، به سادگی پردازش یک کلیک بر روی یک جزء چارت سازمانی. برای بارگیری داده ها در سری 4و این نمودار را در لحظه اول نامرئی کنید، می توانید عملگرها را در پایان روش داده شده قبلی وارد کنید.

اختصاص (سری 1)؛ فعال: =نادرست;

اولین مورد از این عملگرها داده های قرار داده شده در آن را بازنویسی می کند سری 1، به صورت سری سری 4. و اپراتور دوم سریال را نامرئی می کند سری 4. تغییر نوع نمودار توسط روش انجام می شود

فعال: = نهسری 1. فعال؛. فعال: = نهسری 4. فعال؛

در شکل 4.8 b می توانید نتیجه تغییر کاربر به نمای نمودار دیگری را مشاهده کنید.

کار آزمایشگاهی

موضوع: « گرافیک دردلفی- ساخت ساده ترین
شکل های هندسی"

اطلاعات مختصری از نظریه

دلفی سه راه برای نمایش گرافیک در اختیار توسعه دهنده قرار می دهد:

    ترسیم در حین اجرای برنامه

    استفاده از گرافیک های از پیش ساخته شده

    ایجاد تصاویر با استفاده از اجزای گرافیکی

برای ساخت نمودارها، کلاس‌های خاصی ایجاد شده‌اند که ابزارها و روش‌هایی را برای ترسیم فراهم می‌کنند: ابزارها در سه کلاس - Tfont، Tpen، Tbrush توضیح داده شده‌اند. منطقه ترسیم و روش ها توسط کلاس Tcanvas ارائه شده است.

کلاسTfont- ویژگی های فونت مورد استفاده برای نمایش متن روی بوم را مشخص می کند. ویژگی‌های کلاس در بخش «ویژگی‌های اساسی موجود برای اکثر مؤلفه‌ها» توضیح داده شده است.

کلاسTpen– مشخصات قلم (مداد) که با آن خطوط کشیده می شود را مشخص می کند.

خواصکلاس Tpen:

رنگ:Tcolor – رنگ خط (پیش‌فرض – سیاه)

عرض:integer – ضخامت خط بر حسب پیکسل.

سبک = (psSolid، psDash، psDot، psdashDot، psClear) - سبک خط را تعریف می کند (جامد، چین دار، نقطه چین، نقطه چین، نامرئی)

کلاسبراش- ویژگی های قلمویی که سطح تصویر را رنگ می کند را تنظیم می کند.

خواصکلاس براش:

رنگ:Tcolor – رنگ قلم مو (پیش فرض – سفید)

سبک- الگوی قلم مو، می تواند مقادیر زیر را به خود بگیرد:

BsSolid - رنگ ثابت

BsClear - عدم وجود سایه

BsVertical – خطوط عمودی

BsBdiagonal – خطوط مورب راست

BsDiagCross - سلول مایل

BsHorizontal – خطوط افقی

BsFdiagonal – خطوط مورب سمت چپ

BsCross – قفس

کلاسTcanvas– سطحی که تصویر ایجاد شده روی آن قرار می گیرد و ابزارهایی که تصویر با آن ایجاد می شود: فونت، مداد، قلم مو را تعیین می کند.

مانند منطقه کار(بوم، "بوم")، به طور پیش فرض از کل ناحیه مشتری فرم استفاده می شود (بدون هدر، منوی اصلی و خطوط پیمایش فرم)، اما می توانید با استفاده از کامپوننت ها، مناطق کاری کوچک تری را در داخل فرم اختصاص دهید. PaintBoxیا تصویر. مبدأ مختصات بوم گوشه سمت چپ بالای محل کار است، عرض منطقه کار توسط ویژگی تعیین می شود. پهنای مشتری, ارتفاع – ملک ClientHeight.

خواصکلاس Tcanvas:

بوم:Tcanvas – ناحیه طراحی را مشخص می کند

قلم مو:Tbrush – برس برای پر کردن اشکال بسته

فونت:Tfont – فونت برای نمایش متن روی بوم

خودکار:Tpen – مداد (قلم) برای طراحی

PenPos:Tpoint – موقعیت فعلی مکان نما نامرئی روی بوم

اظهار نظر : نوع Tpoint – به صورت زیر تعریف می شود:

تایپ نقطه = رکورد

پیکسل ها: Tcolor - رنگ پیکسل های بوم، X، Y - مختصات پیکسل را تنظیم می کند. ویژگی Pixels برای رسم نمودارها با استفاده از نقاط رنگ انتخاب شده راحت است.

روش های اصلی کلاس TCanvas

    روش MoveTo(x,y:integer); - قلم را بدون رسم خط به نقطه ای با مختصات (x,y) حرکت می دهد.

    روش LineTo(x,y:integer); - یک خط از نقطه فعلی به نقطه با مختصات (x, y) رسم می کند.

مثال : یک خط آبی مورب روی شکل از گوشه سمت چپ بالای شکل تا گوشه سمت راست پایین بکشید.

Pen.color:= cblue;

MoveTo(0,0); LineTo (ClientWidth، ClientHeight)؛

    روش مستطیل(x1,y1,x2,y2:عدد صحیح); - یک مستطیل رسم می کند: x1,y1 - مختصات گوشه سمت چپ بالا. x2، y2 مختصات گوشه پایین سمت راست هستند.

مثال : یک مربع زردرنگ با ضلع 60 پیکسل در وسط شکل بکشید.

var Xc,Yc: عدد صحیح; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=cyellow;

Canvas.rectangle (xc-30,Yc-30,xc+30,Yc+30);

    روش بیضی(x1,y1,x2,y2:عدد صحیح); - بیضی را با مختصات مشخص شده در یک مستطیل رسم می کند.

مثال : یک بیضی حک شده در مولفه PaintBox بکشید.

PaintBox1.Canvas.Pen.Width:=4; //عرض خط = 4 پیکسل

PaintBox1.Canvas.Ellipse(0،0، PaintBox1. ClientWidth، PaintBox1. ClientHeight);

    روش چند ضلعی()؛ - یک چند ضلعی بسته که توسط آرایه ای از مختصات مشخص شده است را رسم می کند.

مثال : یک الماس پر شده بکشید که نقاط میانی دو طرف شکل را به هم وصل می کند

Var Xc,Yc:integer; // مختصات مرکز ناحیه مشتری فرم

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // نارنجی رنگ سایه زدن

Canvas.Polygon();

پایان؛

    روش قوس(x1,y1,x2,y2,x3,y3,x4,y4:عدد صحیح); - قوس یک بیضی را که با یک مستطیل محدود شده است (x1, y1, x2, y2) نمایش می دهد. قوس از نقطه ای با مختصات (x3,y3) به نقطه ای با مختصات (x4,y4) نمایش داده می شود. در برابردر جهت عقربه های ساعت

مثال : یک قوس بیضی بکشید که وسط سمت بالایی جزء را به هم وصل می کند
PaintBox با وسط سمت راستش.

رویه Tform1.Button1Click(Sender:Tobject);

Var X3,y3,x4,y4: عدد صحیح.

با PaintBox1 انجام دهید

Canvas.Pen.Color:= clWhite;

Canvas.Pen.Width:= 3;

Canvas.rectangle(0، 0، PaintBox1.ClientWidth، PaintBox1.ClientHeight);

X3:= ClientWidth div 2;

X4: = ClientWidth;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

Canvas.ARC(0، 0، PaintBox1.ClientWidth، PaintBox1.ClientHeight، x3، y3، x4، y4);

پایان؛

    روش آکورد(x1,y1,x2,y2,x3,y3,x4,y4:عدد صحیح); - یک وتر می کشد - یک خط مستقیم که 2 نقطه بیضی را به هم متصل می کند: یک نقطه با مختصات (x3، y3) با یک نقطه (x4، y4).

مثال : روش Chord در مثال داده شده را جایگزین روش ARC کنید و نتیجه زیر را بگیرید.

    روش پای(x1,y1,x2,y2,x3,y3,x4,y4:عدد صحیح); - یک قطعه بیضی رسم می کند که مرکز بیضی را با مختصات (x3,y3) و (x4,y4) وصل می کند.

مثال : در مثالی که برای روش ARC داده شد، روش PIE را تصور کنید و این نتیجه را بگیرید.

    روش TextOut(x,y:integer;Text:string); - رشته ارسال شده در پارامتر Text را به یک مستطیل خروجی می دهد که گوشه سمت چپ بالای آن با مختصات x، y مشخص شده است. ویژگی های فونت توسط ابزار Font تنظیم می شود.

مثال : نام نمودار رسم شده را در پایین فرم بنویسید.

Canvas.Font.Height:=20 ; //ارتفاع کاراکتر 20 پیکسل

Canvas.Font.Color:=club;

Canvas.TextOut(10، ClientHeight-24، 'graph of function SIN(X)');

اجزای گرافیکی

دلفی تعدادی مؤلفه آماده ارائه می دهد که به شما امکان بهبود می دهد رابط کاربری. این اجزا در صفحه قرار دارند اضافیو سیستمپالت های کامپوننت

جزءتصویر(کلاستیماژ) – ایجاد شده برای نمایش تصاویر گرافیکی ذخیره شده در فایل های خارجی با پسوند:

    نماد (نماد، پیکتوگرام)؛

    bmp( تصویر شطرنجی، بیت مپ)؛

    Wmf، .emf (متافیل);

    Jpg، .jpeg (تصویر فشرده JPEG).

پایه ای خواص :

اندازه اتوماتیک:boolean – وقتی درست است، واقعیمؤلفه ابعاد خود را با ابعاد تصویر بارگذاری شده تنظیم می کند. پیش فرض نادرست است.

کش آمدن:boolean - اگر درست باشد، مقدار بارگذاری شده کل منطقه جزء را اشغال می کند. پیش فرض نادرست است.

بوم:Tcanvas – برای ترسیم داخل کامپوننت در حین اجرای برنامه استفاده می شود.

تصویر:Tpicture - تصویر قرار داده شده در کامپوننت را تعریف می کند.

پایه ای مواد و روش هاکلاس تصویر:

روش LoadFromFile(نام فایل: رشته)؛ - یک تصویر را از فایلی به نام Filename در کامپوننت بارگذاری می کند.

روش ذخیره در فایل(نام فایل: رشته)؛ -تصویر را از کامپوننت در فایلی به نام Filename ذخیره می کند.

جزءPaintBox - یک منطقه طراحی مستطیلی را تعریف می کند. ملک اصلی است بوم، تمام متدهای کلاس Tcanvas موجود است، هیچ ویژگی مستقلی ندارد.

مثال : یک بیضی زرد که در مولفه PaintBox1 حک شده است بکشید.

رویه Tform1Button1Click(فرستنده:موضوع);

با PaintBox1.Canvas انجام دهید

Brush.Color:=cyellow;

Ellipse(0,0,PaintBox1.ClientWidth, PaintBox1.ClientHeight);

پایان;

جزءBitBtnدکمه شطرنجی

دکمه BitBtn، بر خلاف دکمه استاندارد، می تواند علاوه بر عنوان (Caption)، حاوی تصویر مشخص شده توسط ویژگی باشد. گلیف. مجموعه ای از دکمه های استاندارد BitBtn، با ویژگی های از پیش تعریف شده (با تصویر، کتیبه و هدف خاص) وجود دارد - نوع دکمه استاندارد از طریق ویژگی انتخاب می شود. نوع. Kind=(bkCustom، bkAbort، bkCancel، bkClose…)

وظیفه شماره 1

یک برنامه کاربردی ایجاد کنید که حاوی فرم اصلیدو جزء تصویر و 4 دکمه ("بارگذاری تصویر"، "ساخت یک شکل هندسی"، "تغییر رنگ"، "خروج")، و به شما امکان می دهد:

الف) تصویر گرافیکی انتخاب شده توسط کاربر را در مؤلفه Image1 بارگذاری کنید تا تصویر کل منطقه مولفه Image را اشغال کند.

ب) در زیر مؤلفه Image1 نوشته «این تصویر از یک فایل است.

(برای هر اندازه گیری اندازه و موقعیت جزءتصویر1 کتیبه باید
دقیقاً در زیر مؤلفه قرار دارد).

ج) یک شکل هندسی در داخل مؤلفه Image2 رسم کنید: یک بخش بیضی پر شده که وسط مؤلفه Image را به وسط های پایین و سمت راست مؤلفه Image متصل می کند.

(برای هرگونه تغییر در اندازه و موقعیت قطعهتصویر2 شکل باید به درستی ساخته شود، یعنی. با توجه به مشخصات مربوط به جزءتصویر2)

د) رنگ خط یک شکل ترسیم شده در Image2 را به درخواست کاربر با استفاده از مؤلفه ColorDialog تغییر دهید.

وظیفه شماره 2

برنامه ای ایجاد کنید که به شما امکان می دهد به طور تصادفی چندین برچسب (مثلاً کلمه "هورا!") را در مؤلفه Image قرار دهید. برای پیاده سازی این، از مولد اعداد تصادفی تصادفی و تابع Random استفاده کنید.

ابعاد کامپوننت Image، کلمه نمایش داده شده در تصویر و تعداد کلمات باید توسط کاربر وارد شود.

وظیفه شماره 3

برنامه ای ایجاد کنید که به شما امکان می دهد نام یک شکل هندسی را از یک ListBox انتخاب کنید و شکل انتخاب شده را در جزء Image رسم کنید. رنگ شکل از جزء RadioGroup انتخاب می شود.

وظیفه شماره 4

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

در کنار هر گوشه PaintBox1 مختصات آن گوشه را بنویسید (نسبت به مبدا فرمی که کامپوننت PaintBox1 روی آن قرار دارد).

وظیفه شماره 5

با

نوع شکلی را که باید از مولفه Radiogroup1 ترسیم شود، رنگ پر را از مولفه Radiogroup2 انتخاب کنید و شکل انتخاب شده را در مولفه Image رسم کنید.

وظیفه شماره 6

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

کامپوننت PaintBox1 را به 2 قسمت مساوی تقسیم کنید، داخل هر قسمت یک بیضی بکشید که با رنگ انتخاب شده توسط کاربر در ColorDialog پر شده است.

وظیفه شماره 7

با برنامه ای ایجاد کنید که به شما امکان می دهد:

نام یک شکل هندسی را از ListBox انتخاب کنید و شکل انتخاب شده را در جزء Image رسم کنید. اگر در مولفه RadioGroup بله انتخاب شده باشد، شکل باید با رنگ انتخاب شده توسط کاربر در مؤلفه ColorDialog پر شود.

وظیفه شماره 8

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

مولفه PaintBox1 را به 4 قسمت مساوی تقسیم کنید، داخل هر قسمت یک شکل هندسی متفاوت (بیضی، لوزی، مثلث و مستطیل) بکشید. رنگ هر شکل توسط کاربر در ColorGrid انتخاب می شود.

وظیفه شماره 9

نام شکل هندسی را از ListBox انتخاب کنید
اشکال (بیضی، لوزی، مستطیل) و رسم
شکل انتخاب شده در مؤلفه Image. محل
اشکال در مؤلفه Image (ربع اول، سه ماهه دوم،

ربع III یا IV) و رنگ شکل انتخاب می شود
از اجزای RadioGroup.

وظیفه شماره 10

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

به شرطی که اندازه کناری متنی نباشد، عدد منفی نباشد و بیشتر نباشد سایز کوچکترتشکیل می دهد.

مولفه PaintBox1 را به 4 قسمت مساوی تقسیم کنید، داخل هر قسمت یک شکل هندسی انتخاب شده توسط کاربر در Combobox (بیضی، لوزی، مثلث و مستطیل) بکشید. رنگ شکل توسط کاربر در ColorBox انتخاب می شود.

کار شماره 11

برنامه ای ایجاد کنید که به شما امکان می دهد:

از مولفه Radiogroup موقعیت نقشه را انتخاب کنید

در مولفه Image مثلث قائم الزاویه، تنظیم کنید
رنگ سایه یا رنگ طرح شکل، بسته به
فعال کردن دکمه های چک باکس رنگ را از طریق انتخاب کنید
جزء ColorGrid.

کار شماره 12

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

به شرطی که اندازه کناری متن نباشد، عدد منفی نباشد و از اندازه فرم کوچکتر تجاوز نکند.

کامپوننت PaintBox1 را به 2 قسمت مساوی تقسیم کنید، داخل یکی از قسمت ها یک شکل هندسی انتخاب شده توسط کاربر در Combobox (بیضی، لوزی، مثلث و مستطیل) بکشید. رنگ شکل توسط کاربر در ColorBox انتخاب می شود.

برای مثال می توانید رنگ فرم را به صورت زیر تغییر دهید:

form1.Color:= ColorBox1.Colors;

وظیفه شماره 13

برنامه ای ایجاد کنید که به شما امکان می دهد:

الف) یک مربع در وسط شکل بکشید (اندازه ضلع مربع توسط کاربر وارد می شود). به شرطی که اندازه کناری متن نباشد، عدد منفی نباشد و از اندازه فرم کوچکتر تجاوز نکند.

ب) مربع را به یک یا دو مورب تقسیم کنید، بسته به اینکه دکمه های چک باکس درج شده است، و هر مثلث به دست آمده را با رنگ متفاوتی رنگ کنید. انتخاب رنگ توسط کاربر انجام می شود.

وظیفه شماره 14

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

به شرطی که اندازه کناری متن نباشد، عدد منفی نباشد و از اندازه فرم کوچکتر تجاوز نکند.

کامپوننت PaintBox1 را به 2 قسمت مساوی تقسیم کنید، داخل یک قسمت یک لوزی و داخل قسمت دیگر هر مثلثی را رسم کنید. رنگ شکل توسط کاربر در ColorBox انتخاب می شود.

برای مثال می توانید رنگ فرم را به صورت زیر تغییر دهید:

form1.Color:= ColorBox1.Colors;

کار شماره 15

برنامه ای ایجاد کنید که به شما امکان می دهد:

الف) ابعاد مولفه Image را به صورت افقی و عمودی یکسان و برابر با عدد وارد شده توسط کاربر از صفحه کلید تنظیم کنید.

(به شرطی که اندازه کناری متن نباشد، عدد منفی نباشد و از اندازه فرم کوچکتر تجاوز نکند)

ب) جزء Image را به 4 مربع مساوی با دو خط آبی تقسیم کنید.

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

وظیفه شماره 16

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

به شرطی که اندازه کناری متن نباشد، عدد منفی نباشد و از اندازه فرم کوچکتر تجاوز نکند.

کامپوننت PaintBox1 را بر 9 تقسیم کنید قسمت های مساویو هر مستطیل شطرنجی به دست آمده را پر کنید. رنگ پر شده توسط کاربر در ColorBox انتخاب می شود.

برای مثال می توانید رنگ فرم را به صورت زیر تغییر دهید:

form1.Color:= ColorBox1.Colors;

کار شماره 17

دو جزء تصویر و چهار دکمه را روی فرم قرار دهید: رنگ خط، رنگ پر کردن، تأیید و خروج. و جزء ویرایش.

وقتی روی دکمه OK کلیک می کنید، یک مربع با ضلع X در Image1 رسم می شود و یک مثلث قائم الزاویه با پایه های مساوی که هر کدام دارای طول X هستند، در Image2 رسم می شود.

راس مثلث با مبدا Image2 منطبق است. یکی از رئوس مربع با مبدا Image1 منطبق است.

دکمه OK فقط زمانی در دسترس می شود که یک رنگ خط و یک رنگ پر را برای رسم شکل انتخاب کرده باشید.

X - با استفاده از تابع Random به طور تصادفی انتخاب می کند و مقدار X باید در جزء Edit نمایش داده شود.

کار شماره 18

برنامه ای ایجاد کنید که به کاربر امکان می دهد ابعاد مولفه PaintBox1 (بر حسب پیکسل) را تنظیم کند.

کامپوننت PaintBox1 را به 4 قسمت مساوی تقسیم کنید؛ در داخل قسمت انتخاب شده توسط کاربر باید یک دایره پر ساخته شود که اندازه آن توسط کاربر تعیین می شود. کاربر رنگ پر را در ColorBox انتخاب می کند.

برای مثال می توانید رنگ فرم را به صورت زیر تغییر دهید:

form1.Color:= ColorBox1.Colors;


"نمایش اطلاعات گرافیکی در دلفی" طرح موضوع: 1.C S pppp ooooo ssss ooooo bbbb yyyy in in in yyyy vvvv ooooo dddd aaaa yy g rrrrr aaaa ffff iii ههههههههههههههههههههههههههههههههههههههه h tskst iiiiiiiiiii در iv در D D D D eeee llll pppp hhhh iiii O O tttt ooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k aaaa rrrrr tttt iiii nnnnn اووووووووووووووووووووووووووووو ii eee g g y g eee ooooo mmmm eee ttt rrrr iiii hhchh eee ssss kkkk iiii xxxxx ffff iiii yyyy uuuu rrrrr P Pooooo ssss ttt rrrrr ooooo eee nnnn iiii eee yy g g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i and d d d d iiiiii aaaa yyyy rrrrr aaaa mmmm mmmm....


1. روش های نمایش اطلاعات گرافیکی. در دلفی راه های مختلفی برای نمایش اطلاعات گرافیکی وجود دارد: خروجی تصاویر از پیش آماده شده (تصویر، اجزای شکل). P ساخت نمودارها و نمودارها (جزء نمودار و غیره)؛ F تصویربرداری به صورت برنامه ای(شیء بوم).


2.نمایش 2.نمایش تصاویر. نمایش تصاویر با استفاده از مؤلفه IMAGE ما در LLC DDDD DDDD LLC Yiyy و و و ZZZZ P P P PRRRDDDDDDDDDDDDDDD IIII XXXX T T T T T T T T T T T T TOTEMMM بررسی کردیم. . PPPP eee rrrrr eee yyyy تتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتت






3.نمایش 3.نمایش اشکال هندسی. و از چندین مؤلفه Shape می توانید نقاشی های ساده ایجاد کنید. P با تغییر برنامه‌ای موقعیت (سمت چپ، بالا)، اندازه (عرض، ارتفاع) و رنگ (Brush.Color) اجزای Shape در نقاشی، می‌توانید عناصر ساده‌ترین انیمیشن را پیاده‌سازی کنید. R R R R aaaa sssssss mmmm ooooh tttt rrrrr eee tttt yee p p p p rrrrr iii mmmm eee rrrrr ....


4.ساخت 4.ساخت نمودارها و نمودارها. نمودارها برای نمایش بصری بیشتر آرایه های داده های عددی، نمایش بصری و تجزیه و تحلیل آنها طراحی شده اند. PPPP rrrrr iiii mmmm eee rrrrr.... برای ایجاد نمودار در دلفی چندین مؤلفه وجود دارد که یکی از آنها مؤلفه Chart است (بخش TeeChart Std).










نمودارها و نمودارها. داده هایی که نمایش داده می شوند معمولاً به صورت برنامه ریزی شده به نمودار ارسال می شوند، به عنوان مثال: Series1.Clear; (سری پاک) برای i:=1 تا N do Series1.addxy(i, A[i], clGreen); مقدار محور X ارزش محور Y برچسب محور X رنگ داده در نمودار PP aaaa sssssssssss mmmm اوووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو ffff iii kkkk aaaa f f f f uuuu nnnn kkkk tsstst iiiiii y y y = = = = S S S S iiii nnnn ((((xxxx))))


بعدی: کار آزمایشگاهی """ اووو تتت اوووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووو ii xxxx ffff iiii yyyy uuuu rrrrr، و و و xxxx a a a a a nnnn iiii mmmm aaaa tsstst iiii yayayaya """"...وظیفه: 1) با تغییر متناوب تصویر نمایش داده شده در اجزای Image، یک برنامه کاربردی برای اجرای انیمیشن های ساده ایجاد کنید. (تعداد عکس ها حداقل سه عدد است، عکس ها را خودتان انتخاب کنید).




Next: Laboratory work ““““ PPPP oooo ssss tttt rrrrr ooooo eee nnnn iiii eee yy g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i i d d d iiii aaaa yyyy rrrrr aaaa mmmm mmmm """". ..Task: 1)M modify the application از جانب کار آزمایشگاهی 9 (نمایش داده ها در یک جدول). امکان نمایش برخی از داده ها از جدول را در نمودار هیستوگرام یا دایره ای اضافه کنید. 2) یک نمودار از تابع داده شده بسازید.

اسلاید 2

“نمایش اطلاعات گرافیکی در دلفی” طرح کلی موضوع: روش های نمایش اطلاعات گرافیکی در دلفی. نمایش تصاویر نمایش اشکال هندسی ساخت نمودارها و نمودارها.

اسلاید 3

1. روش های نمایش اطلاعات گرافیکی. در دلفی راه های مختلفی برای نمایش اطلاعات گرافیکی وجود دارد: خروجی تصاویر از پیش آماده شده (تصویر، اجزای شکل). ساخت نمودارها و نمودارها (جزء نمودار و غیره)؛ تولید تصاویر به صورت برنامه نویسی (شیء Canvas).

اسلاید 4

نمایش تصاویر نمایش تصاویر با استفاده از مولفه Image را در یکی از موضوعات قبلی مورد بحث قرار دادیم. در اینجا نمونه ای از پیاده سازی یک انیمیشن ساده با تغییر دوره ای تصویر نمایش داده شده در اجزای Image را بررسی خواهیم کرد. برو به مثال

اسلاید 5

نمایش اشکال هندسی نمایش اشکال هندسی ساده روی یک فرم توسط مولفه Shape ارائه می شود.

اسلاید 6

نمایش اشکال هندسی ویژگی های اصلی مولفه Shape:

اسلاید 7

نمایش اشکال هندسی شما می توانید طرح های ساده ای از چندین مولفه Shape ایجاد کنید. با تغییر برنامه‌ای موقعیت (سمت چپ، بالا)، اندازه (عرض، ارتفاع.) و رنگ (Brush.Color) اجزای Shape در طراحی، می‌توانید عناصر ساده‌ترین انیمیشن را پیاده‌سازی کنید. یک مثال را در نظر بگیرید.

اسلاید 8

ساخت نمودارها و نمودارها. نمودارها برای نمایش بصری بیشتر آرایه های داده های عددی، نمایش بصری و تجزیه و تحلیل آنها طراحی شده اند. مثال. چندین مؤلفه برای ایجاد نمودار در دلفی وجود دارد که یکی از آنها مؤلفه نمودار (بخش TeeChart Std) است.

اسلاید 9

ساخت نمودارها و نمودارها. مشاهده کامپوننت نمودار پس از نصب آن در فرم:

اسلاید 10

ساخت نمودارها و نمودارها. علاوه بر "Object Inspector"، با باز کردن یک کادر محاوره ای ویژه (دکمه سمت راست روی مولفه \ Edit Chart...) می توان به ویژگی های جزء نمودار دسترسی پیدا کرد. افزودن سری داده ها تغییر نوع نمودار

اسلاید 11

ساخت نمودارها و نمودارها. انتخاب نوع نمودار:

اسلاید 12

ساخت نمودارها و نمودارها. تنظیم خصوصیات برای محورهای مختصات (محور):

اسلاید 13

ساخت نمودارها و نمودارها. داده هایی که نمایش داده می شوند معمولاً به صورت برنامه ریزی شده به نمودار ارسال می شوند، به عنوان مثال: Series1.Clear; (سری پاک) برای i:=1 تا N do Series1.addxy(i, A[i], ‘’, clGreen); مقدار محور X ارزش محور Y برچسب محور X رنگ داده ها روی نمودار مثالی از رسم تابع y = Sin(x) را در نظر بگیرید.

اسلاید 14

بعدی: کار آزمایشگاهی شماره 13.1. "نمایش تصاویر و اشکال هندسی، انیمیشن آنها." وظیفه: 1) با تغییر متناوب تصویر نمایش داده شده در اجزای Image، یک برنامه کاربردی برای پیاده سازی انیمیشن ساده ایجاد کنید. (تعداد عکس ها حداقل سه عدد است، عکس ها را خودتان انتخاب کنید).

اسلاید 15

وظیفه: 2) با استفاده از مولفه های Shape یک تصویر بیابید و بکشید. با تغییر برنامه‌ای موقعیت، اندازه یا رنگ اجزای Shape در نقاشی، می‌توانید عناصر انیمیشن ساده را پیاده‌سازی کنید.

اسلاید 16

بعدی: کار آزمایشگاهی شماره 12.2. "ساختن نمودارها و نمودارها." تکلیف: تغییر برنامه از کار آزمایشگاهی شماره 9 (نمایش داده ها در جدول). امکان نمایش برخی از داده ها از جدول را در نمودار هیستوگرام یا دایره ای اضافه کنید. 2) یک نمودار از تابع داده شده بسازید.

مشاهده همه اسلایدها