ملخص
----في الوقت الحاضر، في العديد من البرامج التعليمية وأقراص الألعاب المضغوطة، يمكنك غالبًا رؤية العديد من الأشياء
تعتمد تقنية العرض الرسومي على الحركة والتشابك وشكل قطرة المطر والستائر وتكديس كتل البناء وغيرها من طرق عرض الرسومات لجعل الصورة أكثر حيوية وأكثر جاذبية للجمهور. سوف تستكشف هذه المقالة كيفية تنفيذ تقنيات العرض الرسومية المختلفة في دلفي.
المبادئ الأساسية
----في دلفي، من السهل جدًا عرض صورة. ما عليك سوى تحديد مكون TImage في النموذج، وتعيين سمة الصورة الخاصة به، ثم تحديد أي ملف صالح بتنسيق .ICO أو .BMP أو .EMF أو .WMF، ثم تحميله. وسيتم عرض الملف المحدد في مكون TImage. لكن هذا يعرض فقط الرسومات مباشرة في النموذج، ولا توجد مهارة على الإطلاق. لكي يكون للعرض الرسومي تأثير فريد، يمكنك اتباع الخطوات التالية:
---- حدد مكون TImage، وقم بتحميل الرسومات التي سيتم عرضها في مكون TImage أولاً، وبعبارة أخرى، قم بتحميل محتوى الرسومات من القرص إلى الذاكرة كمخزن مؤقت للرسومات.
----قم بإنشاء كائن نقطي جديد بنفس حجم الرسومات الموجودة في مكون TImage.
----استخدم وظيفة CopyRect في Canvas (انسخ المنطقة المستطيلة من لوحة قماشية إلى المساحة المستطيلة من لوحة قماشية أخرى)، واستخدم التقنيات، وشكل ديناميكيًا
تحويل محتويات الملف إلى صورة نقطية ثم قم بعرض الصورة النقطية في النموذج.
----طريقة التنفيذ
يتم عرض تقنيات العرض الرسومية المختلفة أدناه:
1. تأثير الدفع والسحب
يتم سحب الرسومات التي سيتم عرضها إلى الشاشة من الاتجاهات لأعلى ولأسفل ولليسار ولليمين، ويتم تغطية الرسومات القديمة الأصلية على الشاشة في نفس الوقت. ويمكن تقسيم هذا التأثير إلى أربعة
هناك ثلاثة أنواع: السحب لأعلى، والسحب للأسفل، والسحب لليسار، والسحب لليمين، لكن المبادئ متشابهة.
المبدأ: أولاً، انقل الخط الأفقي الأول في الرسم المؤقت إلى آخر خط في الصورة النقطية المراد عرضه، ثم انقل أول خطين أفقيين في الرسم المؤقت إلى آخر صورتين نقطيتين ليتم عرضهما، ثم حرك الثلاثة الأولى والأربعة الأولى حتى يتم نقل كافة البيانات الرسومية. أثناء عملية النقل، يمكنك أن ترى أن الصورة النقطية المعروضة تطفو من الأسفل إلى الأعلى، مما يحقق تأثير السحب لأعلى.
خوارزمية البرنامج:
الإجراء TForm1.Button1Click(Sender: TObject);
فار
newbmp: TBitmap;
i,bmheight,bmpwidth:integer;
يبدأ
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmheight:=image1.Height;
bmpwidth:=image1.Width;
لأني:=0 إلى bmheight أفعل
يبدأ
newbmp.Canvas.CopyRect(Rect
(0، بمفيغت-i، بمبويدث، بمفيغت)،
الصورة 1. قماش،
مستقيم(0,0,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
نهاية؛
newbmp.free;
نهاية؛
2. تأثير متداخل عمودي
المبدأ: تقسيم الرسومات المراد عرضها إلى جزأين. يتم نقل خطوط المسح ذات الأرقام الفردية من الأعلى إلى الأسفل، ويتم نقل خطوط المسح ذات الأرقام الزوجية من الأسفل إلى الأعلى، ويتم تنفيذ كلاهما في نفس الوقت. من الشاشة، يمكنك أن ترى أن الرسومات الأفتح التي تظهر في الأطراف العلوية والسفلية تتحرك باتجاه وسط الشاشة حتى تصبح واضحة تمامًا.
خوارزمية البرنامج:
الإجراء TForm1.Button4Click(Sender: TObject);
فار
newbmp:TBitmap;
i,j,bmheight,bmpwidth:integer;
يبدأ
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmheight:=image1.Height;
bmpwidth:=image1.Width;
أنا:=0;
بينما أنا< =bmheight أفعل
يبدأ
ي:=أنا;
بينما j>0 افعل
يبدأ
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
الصورة 1. قماش،
Rect(0,bmpheight-i+j-1,bmpwidth,bmpheight-i+j));
newbmp.Canvas.CopyRect(Rect
(0,bmheight-j,bmpwidth,bmheight-j+1),
الصورة 1. قماش،
Rect(0,ij,bmpwidth,i-j+1));
ي:=ي-2;
نهاية؛
form1.Canvas.Draw(120,100,newbmp);
أنا:=أنا+2;
نهاية؛
newbmp.free;
نهاية؛
3. تأثير متداخل أفقيا
المبدأ: نفس مبدأ تأثير التشابك العمودي، فيما عدا أن الرسومات المقسمة إلى مجموعتين يتم نقلها إلى الشاشة من الطرفين الأيسر والأيمن على التوالي.
خوارزمية البرنامج:
الإجراء TForm1.Button5Click(Sender: TObject);
فار
newbmp:TBitmap;
i,j,bmheight,bmpwidth:integer;
يبدأ
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmheight:=image1.Height;
bmpwidth:=image1.Width;
أنا:=0;
بينما أنا<=bmpwidth أفعل
يبدأ
ي:=أنا;
بينما j>0 افعل
يبدأ
newbmp.Canvas.CopyRect(Rect(j-1,0,j,bmheight),
الصورة 1. قماش،
Rect(bmpwidth-i+j-1,0,bmpwidth-i+j,bmpheight));
newbmp.Canvas.CopyRect(Rect
(bmpwidth-j,0,bmpwidth-j+1,bmheight),
الصورة 1. قماش،
Rect(ij,0,i-j+1,bmphheight));
ي:=ي-2;
نهاية؛
form1.Canvas.Draw(120,100,newbmp);
أنا:=أنا+2;
نهاية؛
newbmp.free;
نهاية؛
4. تأثير قطرة المطر
المبدأ: انقل خط المسح الأخير للرسومات المؤقتة إلى خط المسح الأول إلى الأخير للصورة النقطية المرئية بالتسلسل، مما يسمح لخط المسح هذا بترك أثره على الشاشة. بعد ذلك، يتم نقل سطر المسح قبل الأخير للرسومات المؤقتة إلى أول خطوط المسح قبل الأخير للصورة النقطية المرئية بالتسلسل. وهكذا بالنسبة لخطوط المسح المتبقية.
خوارزمية البرنامج:
الإجراء TForm1.Button3Click(Sender: TObject);
فار
newbmp:TBitmap;
i,j,bmheight,bmpwidth:integer;
يبدأ
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmheight:=image1.Height;
bmpwidth:=image1.Width;
لأني:= ارتفاع bmheight وصولاً إلى 1
لـ j:=1 لأفعل
يبدأ
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
الصورة 1. قماش،
Rect(0,i-1,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
نهاية؛
newbmp.free;
نهاية؛
5. تأثير اللوفر
المبدأ: قم بتقسيم البيانات الموضوعة في الرسومات المؤقتة إلى عدة مجموعات، ثم انقلها بالتسلسل من المجموعة الأولى إلى المجموعة الأخيرة، ففي المرة الأولى تقوم كل مجموعة بنقل خط المسح الأول إلى الموضع المقابل للصورة النقطية المرئية، وفي المرة الثانية الوقت: حرك خط المسح الثاني، ثم حرك خطي المسح الثالث والرابع.
خوارزمية البرنامج:
الإجراء TForm1.Button6Click(Sender: TObject);
فار
newbmp:TBitmap;
i,j,bmheight,bmpwidth:integer;
xgroup,xcount:عدد صحيح;
يبدأ
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmheight:=image1.Height;
bmpwidth:=image1.Width;
مجموعة x:=16;
xcount:=bmheight div xgroup;
لأني:=0 إلى xcount افعل
من أجل j:=0 إلى xgroup افعل
يبدأ
newbmp.Canvas.CopyRect(Rect
(0,xcount*j+i-1,bmpwidth,xcount*j+i),
الصورة 1. قماش،
Rect(0,xcount*j+i-1,bmpwidth,xcount*j+i));
form1.Canvas.Draw(120,100,newbmp);
نهاية؛
newbmp.Free;
نهاية؛
6. تأثير لبنة البناء
المبدأ: إنه اختلاف في تأثير قطرة المطر، والفرق هو أن تأثير كتلة البناء يحرك قطعة من الرسومات في كل مرة، وليس مجرد خط مسح.
خوارزمية البرنامج:
الإجراء TForm1.Button7Click(Sender: TObject);
فار
newbmp:TBitmap;
i,j,bmheight,bmpwidth:integer;
يبدأ
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmheight:=image1.Height;
bmpwidth:=image1.Width;
أنا:=bmheight;
بينما أنا>0 أفعل
يبدأ
لـ j:=10 لأفعل
يبدأ
newbmp.Canvas.CopyRect(Rect(0,j-10,bmpwidth,j),
الصورة 1. قماش،
Rect(0,i-10,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
نهاية؛
أنا:=i-10;
نهاية؛
newbmp.free;
نهاية؛
خاتمة
تم تمرير تأثيرات العرض الرسومي المذكورة أعلاه إلى الكمبيوتر، وبيئة البرنامج هي Delphi 3.0، وبيئة الأجهزة عبارة عن جهاز متوافق مع Pentium 100M. إنه يعمل بشكل رائع.