نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • مشاوره
  • اجزای نمایش اطلاعات گرافیکی ارائه برنامه نویسی در محیط دلفی با موضوع: نمایش اطلاعات گرافیکی در دلفی

اجزای نمایش اطلاعات گرافیکی ارائه برنامه نویسی در محیط دلفی با موضوع: نمایش اطلاعات گرافیکی در دلفی

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

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

خلاصه نظریه

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

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

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

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

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

کلاسTfont- ویژگی های فونت مورد استفاده برای نمایش متن روی بوم را تنظیم می کند. ویژگی های کلاس در بخش "ویژگی های اساسی موجود برای اکثر اجزا" توضیح داده شده است.

کلاسTpen- ویژگی های قلم (مداد) را که با آن خطوط کشیده می شود را تنظیم می کند.

خواصکلاس Tpen:

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

عرض: عدد صحیح - ضخامت خط بر حسب پیکسل.

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

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

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

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

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

BsSolid - رنگ ثابت

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

Bsعمودی - خطوط عمودی

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

BsDiagCross - سلول مایل

BsHorisontal - خطوط افقی

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

BsCross - سلول

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

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

خواصکلاس Tcanvas:

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

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

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

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

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

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

Tpoint = رکورد را تایپ کنید

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

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

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

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

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

Pen.color: = cblue;

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

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

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

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

Xc: = ClientWidth div 2;

Xy: = ClientHeight div 2;

Canvas.Brush.color: = clyellow;

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: عدد صحیح; // مختصات مرکز ناحیه مشتری فرم

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 (فرستنده: 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).

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

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

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

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

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

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

Canvas.Font.Color: = cblue;

Canvas.TextOut (10، ClientHeight-24، 'گراف تابع SIN (X)');

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

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

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

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

    Bmp (بیت مپ، بیت مپ)؛

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

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

اصلی خواص :

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

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

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

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

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

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

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

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

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

رویه Tform1Button1Click (فرستنده: Tobject);

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

Brush.Color: = clyellow;

بیضی (0,0، PaintBox1.ClientWidth، PaintBox1.ClientHeight)؛

پایان;

مولفهBitBtnدکمه شطرنجی

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

کار شماره 1

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

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

ب) در زیر مؤلفه Image1 عبارت "This is a picture from a file."

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

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

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

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

کار شماره 2

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

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

کار شماره 3

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

کار شماره 4

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

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

کار شماره 5

با

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

کار شماره 6

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

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

کار شماره 7

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

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

کار شماره 8

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

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

کار شماره 9

یک نام هندسی از ListBox انتخاب کنید
اشکال (بیضی، لوزی، مستطیل) و رسم
شکل انتخاب شده در مولفه 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

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

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

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

کار شماره 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;

Visual Component Library (VCL) Delphi اجزای بصری زیر را برای نمایش اطلاعات گرافیکی در اختیار ما قرار می دهد: تصویر (تصویر)، PaintBox (پنجره ای برای طراحی)، DrawGrid (جدول شکل ها)، نمودار (نمودارها و نمودارها)، انیمیشن (کلیپ ویدیویی) خروجی)، و همچنین فرم. این مؤلفه‌ها دارای ویژگی Canvas هستند (که در بالا بحث شد) که به هر پیکسل دسترسی می‌دهد. البته برای کار با گرافیک در دلفی نیازی به ترسیم پیکسل به پیکسل نیست، سیستم دلفی ابزارهای قدرتمندی برای کار با گرافیک ارائه می دهد.

بیایید اجزای فوق را با جزئیات بیشتری در نظر بگیریم:

جزء تصویر (تصویر)

این یک شی از کلاس TImage است. برای نمایش تصاویر خوانده شده از فایل های گرافیکی روی صفحه استفاده می شود. به‌طور پیش‌فرض، تصاویری را که با فرمت *.bmp ارائه شده‌اند، به سطح فرم خروجی می‌دهد. برای نمایش تصاویر با فرمت jpg، لازم است واحد JPEG را در دایرکتیو استفاده ها وصل کنید. در تب Additional پالت Component واقع شده است.

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

شکل 9 - جزء Image روی فرم

برای باز کردن یک دیالوگ برای انتخاب تصویر مورد نظر، با استفاده از Object Inspector موارد زیر را انجام دهید. برای انجام این کار، ویژگی Picture را پیدا کرده و روی سه نقطه در سمت چپ آن کلیک کنید. پنجره Picture Editor باز می شود و در آن Load را انتخاب می کنیم، در پنجره باز شده فایل تصویر را انتخاب می کنیم.

همچنین می توان با فراخوانی متد LoadFromFile از ویژگی Picture به صورت برنامه نویسی این کار را انجام داد:

Image1.Picture.LoadFromFile ("name_pic.jpeg");

که در آن name_pic.jpeg نام فایل است.

جدول 8 - ویژگی های اساسی مولفه Image

ویژگی

شرح

تصویر در قسمت کامپوننت نمایش داده می شود

ابعاد اجزاء اگر این ابعاد کوچکتر از اندازه اثر هنری باشد و ویژگی های Strech، AutoSize و Proportional False باشد، بخشی از تصویر نمایش داده می شود.

به شما امکان می دهد تصاویر را بدون اعوجاج به صورت خودکار مقیاس بندی کنید. برای انجام مقیاس بندی، مقدار ویژگی AutoSize باید برابر False باشد

به شما این امکان را می‌دهد که به طور خودکار یک تصویر را اندازه (کوچک کردن یا کشیده شدن) متناسب با اندازه مولفه Image تغییر دهید. اگر اندازه مولفه با اندازه تصویر متناسب نباشد، در این صورت تصویر مخدوش می شود

به شما امکان می دهد تا اندازه مؤلفه را به طور خودکار تغییر دهید تا متناسب با تصویر باشد

در صورتی که عرض تصویر کمتر از عرض جزء باشد، به شما امکان می دهد موقعیت افقی تصویر را در قسمت Image component تعیین کنید.

سطح برای نمایش گرافیک

رنگ پس زمینه شفاف تصویر را مشخص می کند

مثال 1: برنامه ای بنویسید تا تصاویر را با استفاده از مولفه Image مشاهده کنید. برنامه باید دارای قابلیت های زیر باشد:

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

شکل 10 - پنجره برنامه قبل از شروع آن

ایجاد پروژه:

  • 1. یک پوشه برای فایل های برنامه ایجاد کنید و محیط توسعه یکپارچه دلفی را راه اندازی کنید.
  • 2. اجزاء را به فرم اضافه کنید:

ابتدا کامپوننت Image را روی فرم قرار می دهیم، جزء اصلی که باید با آن کار کنیم. علاوه بر او، ما به اجزای زیر نیاز داریم:

  • · ScrollBox لازم است زمانی که تصویر در حالت تمام اندازه فراتر از تصویر باشد. خاصیت Aling آن را روی مقدار alClient قرار می دهیم تا اندازه آن متناسب با اندازه پنجره تغییر کند. و کامپوننت Image را روی آن قرار دهید.
  • · ما همچنین کامپوننت-دیالوگ های SavePictureDialog و OpenPictureDialog را اضافه می کنیم که برای ذخیره و باز کردن تصاویر در نظر گرفته شده است. ما به اولی نیاز داریم تا تصویر را در فهرست انتخاب شده کپی کنیم، دومی برای فراخوانی گفتگو برای باز کردن یک فایل گرافیکی. آنها در صفحه دیالوگهای پالت مؤلفه قرار دارند. همچنین از این صفحه به کامپوننت PrintDialog نیاز داریم که باید دیالوگ انتخاب چاپگر برای چاپ را فراخوانی کنیم.
  • منوی اصلی را اضافه کنید تا منوی اصلی را به برنامه اضافه کنید و XPManifest را برای طراحی رنگارنگ‌تر اضافه کنید
  • · همچنین باید نام تصاویر را در دایرکتوری کاری در جایی ذخیره کنیم. برای این منظور، مؤلفه ListBox مناسب است، که می تواند هنگام پردازش رویداد Create Form1 پنهان شود.
  • · برای قرار دادن دکمه های ناوبری و کار راحت با آنها، یک پنل Veil اضافه کنید که روی آن این دکمه ها را قرار می دهیم (تصویر قبلی، تصویر بعدی، اندازه واقعی، تغییر اندازه، حذف، کپی در، چاپ، ویرایش). SpeedButton به عنوان یک جزء برای آنها انتخاب شده است.
  • یک تایمر برای گرفتن کلیدهای "چپ" (تصویر قبلی)، "راست" (تصویر بعدی) و "دل" (تصویر را حذف کنید) اضافه کنید.
  • · و یک مؤلفه دیگر - ProgressBar، که روند بارگذاری فایل های بزرگ * Jpg را نمایش می دهد.
  • 3. کد مدیریت رویداد فشار دادن دکمه ها (تصویر قبلی، تصویر بعدی، اندازه واقعی، تغییر اندازه، حذف، کپی در، چاپ، ویرایش) را بنویسید. کدی را برای مدیریت رویداد کلیک بر روی آیتم های منوی اصلی (خروج، باز کردن، بستن، ایجاد) بنویسید.
  • 4. تنظیمات اولیه برای ایجاد فرم را مشخص کنید. روی فضای خالی فرم دوبار کلیک کنید و رویه کد رویه TForm1.FormCreate (فرستنده: TObject) را بنویسید، کد ماژول را در پیوست 1 ببینید.
  • 5. رویه هایی از نوع زیر را بنویسید:

فرآیند FindFileInFolder (مسیر، ext: رشته)؛

این روال با استفاده از ماسک ext پوشه مسیر را برای فایل‌ها اسکن می‌کند.

فهرست کامل کد ماژول برنامه در پیوست 1 (فهرست برنامه 3) قرار دارد.

  • 1. قابلیت های مؤلفه Image را فهرست کنید.
  • 2. جزء Image از کدام کلاس است؟
  • 3. 3. کامپوننت Image به طور پیش فرض چه نوع فایل هایی را پشتیبانی می کند؟
  • 4. 4. مشخصات اصلی مؤلفه Image را فهرست کنید.
  • 5. 5. چه ویژگی تصویر جزء Image را ذخیره می کند؟

موضوع :
هدف از کار آزمایشگاهی دلفی.

دانش آموزان باید یاد بگیرند که:

  • نمودار ایجاد کنید

بخش تئوری

پیکتوگرام نام صفحه وقت ملاقات
تصویر اضافی
شکل اضافی
DrawGrid

(جدول شکل ها)

اضافی
چارت سازمانی

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

اضافی
جعبه رنگ

(پنجره نقاشی)

سیستم

شکل قلم مو

تصویر:

چارت سازمانی:

روش پاک کردن

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

روش AddXY

PaintBox:

ورزش 1

تکلیف 2

تکلیف 3

با PaintBox1، canvas do

Brush.Color: = clRed;

Pen.Color: = clGreen;

Pen.Style:= psDash;

Pen.Color: = clRed;

توضیح:

ورزش 4

Var i: عدد صحیح;

Series1.Clear;

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

سری 1.AddXY (i * 0.29،10 *گناه (i * 0.29)، "clGreen) ؛،جایی که i * 0.29 (AXValue)این یک استدلال است و 10* گناه (i * 0.29) (AYValue)

  1. y = 3.2 * (14 * x)
  2. y = گناه (x)
  3. y = cos (x)
  4. y = x 2 + cos (x)
  5. y = x 2 -4.5 * 4

ورزش 5

با ComboBox1 شروع کنید

آیتم ها: = Screen.Fonts;

  1. پروژه را ذخیره و اجرا کنید.
  1. واگذاری به کار.
  2. کدی که نوشتی رو پیست کن
  3. نتیجه گیری در مورد کار انجام شده. موضوع : استفاده از قابلیت های گرافیکی

    هدف از کار آزمایشگاهی- با قابلیت های گرافیکی آشنا شوید دلفی.

    دانش آموزان باید یاد بگیرند که:

    • هر قطعه گرافیکی J را ایجاد کنید
    • از قابلیت های گرافیکی استفاده کنید
    • از قابلیت های گرافیکی استفاده کنید
    • نمودار ایجاد کنید

    بخش تئوری

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

    پیکتوگرام نام صفحه وقت ملاقات
    تصویر اضافی برای نمایش گرافیک استفاده می شود: تصاویر کوچک، بیت مپ و متافیل
    شکل اضافی برای ساختن نمونه های هندسی اولیه استفاده می شود
    DrawGrid

    (جدول شکل ها)

    اضافی برای ایجاد جدولی در برنامه که می تواند حاوی گرافیک باشد استفاده می شود
    چارت سازمانی

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

    اضافی برای ایجاد نمودار و نمودار استفاده می شود
    جعبه رنگ

    (پنجره نقاشی)

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

    علاوه بر این، می توانید اطلاعات گرافیکی را روی سطح هر جزء پنجره ای که دارای ویژگی Canvas است، نمایش داده و وارد کنید. نقاشی های ایجاد شده در طول اجرای برنامه می تواند بدون حرکت یا متحرک باشد.

    شکل : فقط به صورت مشروط می توان به ابزار نمایش اطلاعات گرافیکی نسبت داد، زیرا به سادگی اشکال هندسی مختلف را نشان می دهد که به طور مناسب سایه دار شده اند. ویژگی اصلی این کامپوننت Shape است که می تواند مقادیری را بگیرد. قلم مو(brush) - این ویژگی یک شی از نوع TBrush است که دارای تعدادی زیرخواص است، به ویژه: رنگ (Brush.Color) و سبک (Brush.Style) پر شدن شکل. سومین ویژگی خاص مولفه Shape Pen است که سبک خطوط را تعیین می کند.

    تصویر: ویژگی های اصلی: Picture - مسئول بارگذاری تصویر است، Stretch - مسئول اندازه تصویر در مولفه Image است، AutoSize - مسئول اندازه مولفه ای است که تصویر در آن بارگذاری شده است، با در نظر گرفتن اندازه تصویر.

    چارت سازمانی: برای تنظیم مقادیر نمایش داده شده باید از متدهای Series استفاده کنید. بیایید به سه مورد از آنها نگاهی بیندازیم.

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

    روش اضافه کردن: - افزودن (Const AValue: Double؛ Const ALabel: String؛ AColor: TColor)

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

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

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

    PaintBox: در صفحه سیستم باشید. این یک پنجره بوم ساده است که در آن می توانید تصاویر دلخواه را ترسیم کنید. ابزارهای گرافیکی در ویژگی های فونت، قلم مو و قلم قرار دارند. بوم (بوم) در ویژگی Canvas جزء موجود است. خود نقاشی در کنترل کننده رویداد onPaint برنامه ریزی شده است.

    ورزش 1

    1. برنامه ای ایجاد کنید که شما را با مولفه Image آشنا کند. لازم است اجزاء را قرار دهید: Label، Image، BitBtn، Button. مانند تصویر ثبت نام کنید و هر تصویری را آپلود کنید. کامپوننت ها را طوری تنظیم کنید که در Image1 تصویر در فریم ها قرار گیرد و در Image2 تصویر با اندازه آن مطابقت داشته باشد. نکات ابزار را ایجاد کنید، وقتی ماوس را روی هر تصویر می‌چرخانید، ویژگی Hint مسئول نکات است، برای نمایش باید متن را وارد کنید و نکات را در ویژگی ShowHint فعال کنید.

    تکلیف 2

    1. اندازه شکل را افزایش دهید و اجزای زیر را اضافه کنید: شکل، برچسب. اشتراک در.
    2. با توجه به تصویر، استایل ها را برای هر جزء Shape اعمال کنید:

    تکلیف 3

    1. به عنوان مثال، اجازه دهید کامپوننت PaintBox را روی یک فرم قرار دهیم. کنترل کننده OnPaint:

    با PaintBox1، canvas do

    Brush.Color: = clRed;

    پای (12,100,140,280,12,100,140,280);

    Pen.Color: = clGreen;

    Pen.Style:= psDash;

    مستطیل (120،60، عرض، ارتفاع)؛

    Pen.Color: = clRed;

    پلی لاین ();

    TextOut (75،20، "متن شما می تواند اینجا باشد!");

    توضیح:خط اول رنگ پر را تنظیم می کند: Brush.Color: = clRed; دومی بخشی از بیضی را ترسیم می کند: پای (12,100,140,280,12,100,140,280); خطوط زیر پارامترهای قلم (چگونه شکل ها حاشیه خواهند داشت)، عرض، رنگ و سبک خط را تنظیم می کند: Pen.Width: = 4; Pen.Color: = clGreen; Pen.Style:= psDash; اما در این حالت یک خط جامد خواهیم دید، زیرا اگر ضخامت بیش از یک پیکسل باشد، سبک خط psSolid (جامد) خواهد بود. خط زیر مسئول رسم مربع است: مستطیل (120،60، عرض، ارتفاع). دستور زیر یک ستاره قرمز رنگ ترسیم می کند: Polyline (); آخرین خط مسئول خروجی متن است: TextOut (75،20، "متن شما می تواند اینجا باشد!");

    ورزش 4

    1. برنامه ای بسازید که نمودار مشخصی از تابع y = 10 * sin (x) را ترسیم کند.

    1. فرم را بزرگ کنید و کامپوننت TChart را از تب Additional روی آن قرار دهید و کامپوننت Button, Label را قرار دهید. TChart جدید را به اندازه مناسب برای توسعه گسترش دهید.
    2. با دوبار کلیک کردن روی کامپوننت وارد ویرایشگر گراف می شویم. ویرایش و سفارشی سازی ظاهر سری. برای این کار روی Add کلیک کنید و نوع نمودار خطی را انتخاب کنید و OK کنید. برای تغییر عنوان، عنوان را فشار دهید و فرمول y = 10 * sin (x) را وارد کنید.
    3. کد رسم نمودار را در رویداد OnClick مولفه Button بنویسید:

    Var i: عدد صحیح;

    Series1.Clear;

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

    Series1.AddXY (i * 0.29،10 * sin (i * 0.29)، ", clGreen);

    توضیح: Method Series1.Clear; سری را از داده های وارد شده قبلی پاک می کند، به طوری که هنگام به روز رسانی، مقادیر قدیمی وجود نداشته باشد. برای رسم نمودار، به مقادیری نیاز دارید، در مورد ما 22 مقدار، که در آنها نمودار توسط تابع رسم می شود. سری 1.AddXY (i * 0.29،10 *گناه (i * 0.29)، "clGreen) ؛،جایی که i * 0.29 (AXValue)این یک استدلال است و 10* گناه (i * 0.29) (AYValue)مقدار محاسبه تابع، ”(ALabel) نامی که در نمودار و در افسانه نمایش داده می شود را می توان خالی گذاشت و clGreen (ACColor) رنگ خط است.

    1. کار زیر را به تنهایی انجام دهید: نموداری از توابع بکشید
    2. y = 3.2 * (14 * x)
    3. y = گناه (x)
    4. y = cos (x)
    5. y = x 2 + cos (x)
    6. y = x 2 -4.5 * 4

    ورزش 5

    1. برنامه ای ایجاد کنید که به شما امکان می دهد کاراکترهای موجود در فونت های سیستم را مشاهده کنید.
    2. شکل را بزرگ کنید، DrawGrid1، ComboBox1، Label را قرار دهید. ویژگی های زیر را برای مولفه DrawGrid1 تنظیم کنید: RowCount = 7، ColCount = 32، FixedCols = 0، FixedRows = 0، DafaultColWidth = 20، DefaultRowHeight = 20.
    3. برای ترسیم مجدد محتویات هر سلول، یک کنترل کننده رویداد OnDrawCell برای جزء DrawGrid1 ایجاد کنید. برای نمایش کاراکترهای فونت، از ویژگی Canvas جزء DrawGrid1 استفاده می کنیم. ما مستقیماً به متد TextRect از ویژگی Canvas نیاز داریم. این روش برای نمایش اطلاعات متنی در یک سلول خاص استفاده می شود. کنترل کننده رویداد به شکل زیر خواهد بود:

    DrawGrid1.Canvas.textrect (rect، Rect.Left، Rect.Top، char ((ARrow + 1) * 32 + acol));

    1. پروژه را ذخیره کنید. مطمئن شوید که سلول های جدول کاراکترها را با فونت پیش فرض سیستم نمایش می دهند.
    2. برای انتخاب فونت، از کامپوننت ComboBox1 استفاده می کنیم. برای اینکه این کامپوننت شامل تمام فونت های صفحه نمایش باشد، لازم است هنگام ایجاد فرم، آنها را به لیست اضافه کنید. نام تمام فونت های صفحه را می توان با استفاده از متغیر جهانی Screen از نوع TScreen پیدا کرد. این متغیر به طور خودکار به تمام برنامه های دلفی اضافه می شود. متغیر Screen حاوی اطلاعاتی در مورد وضعیت فعلی صفحه برنامه است: نام فرم ها و ماژول های داده استفاده شده توسط برنامه. اطلاعات مربوط به فرم فعال و اجزای مورد استفاده در این فرم؛ اندازه و وضوح صفحه نمایش استفاده شده؛ اطلاعات مربوط به مکان نماها و فونت های موجود در برنامه. اطلاعات مربوط به فونت های موجود در برنامه در ویژگی Font متغیر Screen موجود است.
    3. یک کنترل کننده رویداد onCreate برای فرم ایجاد کنید و عباراتی را به آن اضافه کنید:

    با ComboBox1 شروع کنید

    آیتم ها: = Screen.Fonts;

    ItemIndex: = Items.IndexOf (Font.Name);

    1. پروژه را ذخیره و اجرا کنید. جزء DrawGrid1 شامل کاراکترهای مجموعه فونت در ComboBox1 است.
    2. برای پیوند دادن مقدار نام فونت برای DrawGrid1 و ComboBox1، اجازه دهید یک رویداد کنترل کننده دیگر ایجاد کنیم:

    DrawGrid1.Font.Name:=ComboBox1.Text;

    1. پروژه را ذخیره و اجرا کنید.
    1. شماره، موضوع، هدف کار آزمایشگاهی.
    2. واگذاری به کار.
    3. شرح داده های ورودی، میانی و نتیجه با ذکر نوع آنها.
    4. برنامه نویسی به زبان برنامه نویسی
    5. نتیجه اجرای برنامه (داده های وارد شده و داده های دریافتی)
    6. کدی که نوشتی رو پیست کن
    7. نتیجه گیری در مورد کار انجام شده.

"نمایش اطلاعات گرافیکی در دلفی"
طرح موضوع:
1. روش های نمایش گرافیک
اطلاعات در دلفی
2. نمایش تصاویر
3. نمایش هندسی
ارقام

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

2. نمایش تصاویر
نمایش تصاویر با استفاده از
ما مؤلفه Image را در آن بررسی کردیم
یکی از موضوعات قبلی
در اینجا به یک مثال نگاه می کنیم
اجرای ساده ترین انیمیشن
با تغییر دوره ای
تصویر نمایش داده شده در
اجزای تصویر
برو مثال بزن


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

3. نمایش اشکال هندسی.
ویژگی های اصلی مولفه Shape:
قلم مو
خودکار
شکل
رنگ (.Color) و سبک (.Style) برای
پر کردن شکل
رنگ (.Color)، سبک (.Style)، عرض
(.Width) و روش خروجی (.Mode) خطوط
ارقام
نمای شکل هندسی

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

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

4. ساخت نمودارها و نمودارها.
نمای مولفه نمودار بعد از آن
تنظیمات روی فرم:

4. ساخت نمودارها و نمودارها.
علاوه بر "بازرس شی"، دسترسی به
ویژگی های جزء نمودار، شما می توانید
با باز کردن یک پنجره خاص دریافت کنید
دیالوگ (دکمه سمت راست بر روی جزء \
ویرایش نمودار ...)
اضافه کردن
سری داده ها
تغییر نوع
نمودار

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

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

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

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

ورزش:
2) بیایید و از آن یک تصویر بکشید
اجزای شکل به صورت برنامه ای
تغییر موقعیت، اندازه یا رنگ
اجزای شکل در شکل
برای اجرای عناصر ساده ترین
انیمیشن

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

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

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

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

مولفه

صفحه

شرح

تصویر

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


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

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


DrawGrid (جدول شکل ها)

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


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

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


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

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

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

هر نقطه از بوم مختصاتی دارد ایکسو 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.1a را ببینید. نمودار سینوسی معلوم شد، اگرچه خیلی خوب نیست، زیرا به نقاط جداگانه - پیکسل تقسیم می شود.

بوم - شی کلاس 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): = PX * 4 * Pi / ClientWidth ;: = Sin (X);

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

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

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

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

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

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

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

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

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

اشکال معمولاً خالی نیستند، بلکه با ویژگی بوم پر می شوند قلم مو- قلم مو. ویژگی قلم مویک شی است که به نوبه خود دارای تعدادی ویژگی است. ویژگی رنگرنگ پر را مشخص می کند. ویژگی سبکالگوی پر را تعریف می کند (هچینگ). پیش فرض است سبکبرابر است 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. ايجاد كردن؛

// تصویر را به بوم فرم بیاورید... قرعه کشی (10، 10، بیت مپ)؛

// شی 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فقط یک عملگر را تشکیل می دهد:

قرعه کشی (10، 10، بیت مپ)؛

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

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

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

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

مثلا اپراتور

CopyRect (MyRect2، Bitmap. Canvas، MyRect1)؛

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

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

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

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

اجزای تصویر و PaintBox

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

اما علاوه بر این قابلیت ها، جزء تصویرویژگی هایی وجود دارد که به شما امکان می دهد با انواع مختلف فایل های گرافیکی کار کنید.پشتیبانی از سه نوع فایل - بیت مپ، آیکون و متافیل. هر سه نوع فایل تصاویر را ذخیره می کنند. تنها تفاوت در نحوه ذخیره آنها در فایل ها و ابزار دسترسی به آنها است. بیت مپ (فایل با پسوند. 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. اجرا) سپس... تصویر 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);

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

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

اختصاص (منبع: TPersistent);

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

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

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

تصویر ذخیره شده در آن را به کلیپ بورد اضافه می کند تصویر 1... به طور مشابه، اپراتور

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

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

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

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

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

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

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

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

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

پایان;

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

جزء شکل

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

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

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


یکی دیگر از ویژگی های ضروری یک جزء این است قلم مو(قلم مو). این ویژگی یک شی از نوع است تی براش، که دارای تعدادی ویژگی فرعی است، به ویژه: رنگ ( قلم مو. رنگ) و سبک ( قلم مو. سبک) شکل را پر کنید. مقداری را پر کنید سبکشما می توانید در شکل 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 را دوباره تولید کنید، بر روی مؤلفه بالایی دوبار کلیک کنید. چارت سازمانی... شما به پنجره Chart Editor (شکل 4.9) به صفحه Chart هدایت می شوید که دارای چندین تب است. اول از همه، شما به تب Series در آن علاقه مند خواهید شد. بر روی دکمه افزودن کلیک کنید - یک سری اضافه کنید. به پنجره ای هدایت می شوید (شکل 4.10) که در آن می توانید نوع نمودار یا نمودار را انتخاب کنید. در این مورد، Pie - a Pie chart را انتخاب کنید. با استفاده از تب Titles می توانید عنوان نمودار را تنظیم کنید، تب Legend به شما امکان می دهد پارامترهای نمایش افسانه نمودار (لیست نمادها) را تنظیم کنید یا حتی آن را از روی صفحه پنهان کنید، تب Panel ظاهر پانل را تعیین می کند. که در آن نمودار نمایش داده می شود، زبانه 3D به شما امکان می دهد ظاهر نمودار خود را تغییر دهید: شیب، برش، ضخامت و غیره.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

155;=251;=203;=404;

var: کلمه؛

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

شروع؛ (A1، "Shop 1"، clYellow)؛ (A2، "Shop 2"، clBlue)؛ (A3، "Shop 3"، clRed)؛ (A4، "Shop 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و برای اینکه این نمودار در لحظه اول نامرئی شود، می توانید در انتهای روش فوق عبارات را وارد کنید.

اختصاص (Series1) ;. فعال: = نادرست;

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

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

در شکل 4.8 ب، می توانید نتیجه تغییر کاربر به نمای متفاوتی از نمودار را مشاهده کنید.

مقالات مرتبط برتر