SlideShare a Scribd company logo
1 of 49
Download to read offline
Intro to Event-driven Programming
and Forms with Delphi
L06 – GDI Drawing

Mohammad Shaker
mohammadshakergtr.wordpress.com
Intro to Event-driven Programming and Forms with Delphi
@ZGTRShaker
2010, 2011, 2012
Randomize and Color
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Color:= ClRed;
end;
Randomize and Color
Randomize and Color
procedure TForm2.Button1Click(Sender:
TObject);
var i:integer;
begin
i:= Random(100);
Form2.Color:= i;
end;
Randomize and Color
procedure TForm2.Button1Click(Sender:
TObject);
var i:integer;
begin
i:= Random(RandSeed);
Form2.Color:= i;
end;
Drawing
• What’s a Canvas?
• Canvas Methods
Canvas.Method()

// Form Object

Object.Canvas.Method()

// An Object
Canvas
• It’s an “Object”
• It’s used mainly for “drawing”
• Canvas:
– Can be used as a “Variable”:
• Can: tCanvas

– Can be used with another “Component”s:
• Image1.Canvas
• Form1.Canvas
Canvas
• Move the start point to a specific point.
Canvas.MoveTo(x,y)

• Move the start point to a specific point.
• Draw a line to the specific point.
Canvas.LineTo(x,y)

• Note that “LineTo” contains “MoveTo” also.
Canvas
procedure TForm2.Button1Click(Sender: TObject);
begin
Canvas.MoveTo(10,10);
Canvas.LineTo(200,200);
end;
Canvas - functions
//Canvas.Pen
Canvas.Pen.color:= ClBlack;

//Canvas.Pen
Form1.Canvas.Pen.color:= ClBlack;
Canvas - functions
Canvas.Pen.Width:= 10;

Form1.Canvas.Pen.Width:= 10;
Canvas - functions
procedure TForm2.Button1Click(Sender: TObject);
begin
//Canvas.Pen
Canvas.Pen.color:= clRed;
Canvas.Pen.Width:= 10;
Image1.Canvas.LineTo(30,120);
end;
Canvas - functions

Note That is Not what we want
Canvas - functions
procedure TForm2.Button1Click(Sender: TObject);
begin
Image1.Canvas.LineTo(30,120);
Canvas.Pen.color:= clRed;
Canvas.Pen.Width:= 10;
Canvas.LineTo(0,120);
end;
Canvas - functions
• Why?
Canvas
procedure TForm2.Button1Click(Sender: TObject);
begin
Canvas.MoveTo(10,10);
Canvas.LineTo(50,70);
Canvas.LineTo(120,100);
Canvas.LineTo(50,50);
Canvas.Pen.Color:= CLRed;
Canvas.MoveTo(300,10);
Canvas.LineTo(310,80);
Canvas.LineTo(250,90);
end;
Canvas
Canvas - functions

Canvas.Rectangle(X1,Y1,X2,Y2);
Canvas.Ellipse(X1,Y1,X2,Y2);
Canvas.RoundRect(X1,Y1,X2,Y2,X3,Y3);
Canvas - functions
procedure TForm2.Button1Click(Sender: TObject);
Var X1,X2,Y1,Y2: Integer;
begin
X1:= 10;
X2:= 20;
Y1:= 30;
Y2:= 40;
Canvas.Rectangle(X1,Y1,X2,Y2);
end;
Canvas - functions
Canvas - functions
procedure TForm2.Button1Click(Sender: TObject);
Var X1,X2,Y1,Y2: Integer;
begin
X1:= 0;
X2:= 20;
Y1:= 0;
Y2:= 40;
Image1.Canvas.Rectangle(X1,Y1,X2,Y2);
end;
Canvas - functions

Notice The
Difference
Canvas - functions
procedure TForm2.Button1Click(Sender: TObject);
Var X1,X2,Y1,Y2: Integer;
begin
X1:= 0;
X2:= 60;
Y1:= 0;
Y2:= 40;
Image1.Canvas.Ellipse(X1,Y1,X2,Y2);
end;
Canvas - functions
How To Draw A Circle?
procedure TForm2.Button1Click(Sender: TObject);
Var X1,X2,Y1,Y2: Integer;
begin
X1:= 0;
X2:= 60;
Y1:= 0;
Y2:= 60;
Image1.Canvas.Ellipse(X1,Y1,X2,Y2);
end;
How To Draw A Circle?
Canvas - functions
procedure TForm2.Button1Click(Sender: TObject);
begin
//Canvas.Pen
Image1.Canvas.Pen.color:= ClRed;
Image1.Canvas.Pen.Width:= 10;
Image1.Canvas.LineTo(30,120);
end;
Canvas - functions

Now, That’s Right ;)
Canvas - functions
Canvas.Brush;
procedure TForm2.Button1Click(Sender: TObject);
begin
Image1.Canvas.Pen.color:= clGray;
Image1.Canvas.Pen.Width:= 5;
Image1.Canvas.Brush.Color:= clRed;
Image1.Canvas.Rectangle(10,10,100,100);
end;
Canvas - functions
Canvas - functions
Canvas.Brush;

procedure TForm2.Button1Click(Sender: TObject);
begin
Image1.Canvas.Pen.color:= clGray;
Image1.Canvas.Pen.Width:= 5;
Image1.Canvas.Brush.Color:= clRed;
Image1.Canvas.Rectangle(10,10,100,100);
Image1.Canvas.Ellipse(10,10,150,150);
end;
Canvas - functions
Canvas - functions

procedure TForm2.Button1Click(Sender: TObject);
begin
Image1.Canvas.Pen.color:= clGray;
Image1.Canvas.Pen.Width:= 5;
Image1.Canvas.Brush.Color:= clRed;
Image1.Canvas.Rectangle(10,10,100,100);
Image1.Canvas.Brush.Color:= clGreen;
Image1.Canvas.Ellipse(10,10,150,150);
end;
Canvas - functions
Common Canvas Prop.
Delphi help
Properties

Descriptions

Font

Specifies the font to use when writing text on the image. Set the properties of the TFont
object to specify the font face, color, size, and style of the font.

Brush

Determines the color and pattern the canvas uses for filling graphical shapes and backgrounds.
Set the properties of the TBrush object to specify the color and pattern or bitmap to use when
filling in spaces on the canvas.

Pen

Specifies the kind of pen the canvas uses for drawing lines and outlining shapes. Set the
properties of the TPen object to specify the color, style, width, and mode of the pen.

PenPos

Specifies the current drawing position of the pen.

Pixels

Specifies the color of the area of pixels within the current ClipRect.
Common Canvas methods
Delphi help
Method

Descriptions

Arc

Draws an arc on the image along the perimeter of the ellipse bounded by the
specified rectangle.

Chord

Draws a closed figure represented by the intersection of a line and an ellipse.

CopyRect

Copies part of an image from another canvas into the canvas.

Draw

Renders the graphic object specified by the Graphic parameter on the canvas
at the location given by the coordinates (X, Y).

Ellipse

Draws the ellipse defined by a bounding rectangle on the canvas.

FillRect

Fills the specified rectangle on the canvas using the current brush.

FloodFill Fills an area of the canvas using the current brush.
(VCL only)
FrameRect Draws a rectangle using the Brush of the canvas to draw the border.
(VCL only)
Common Canvas methods
Delphi help
LineTo
MoveTo

Draws a line on the canvas from PenPos to the point specified by X and Y, and sets the pen
position to (X, Y).
Changes the current drawing position to the point (X,Y).

Pie

Draws a pie-shaped the section of the ellipse bounded by the rectangle (X1, Y1) and (X2, Y2) on
the canvas.

Polygon

Draws a series of lines on the canvas connecting the points passed in and closing the shape by
drawing a line from the last point to the first point.

Polyline

Draws a series of lines on the canvas with the current pen, connecting each of the points passed
to it in Points.

Rectangle

Draws a rectangle on the canvas with its upper left corner at the point (X1, Y1) and its lower right
corner at the point (X2, Y2). Use Rectangle to draw a box using Pen and fill it using Brush.
Common Canvas methods
Delphi help
RoundRect

Draws a rectangle with rounded corners on the canvas.

StretchDraw

Draws a graphic on the canvas so that the image fits in the specified rectangle. The
graphic image may need to change its magnitude or aspect ratio to fit.

TextHeight,
TextWidth

Returns the height and width, respectively, of a string in the current font. Height includes
leading between lines.

TextOut

Writes a string on the canvas, starting at the point (X,Y), and then updates the PenPos to
the end of the string.

TextRect

Writes a string inside a region; any portions of the string that fall outside the region do
not appear
Canvas
procedure TForm2.Image1Click(Sender: TObject);
Var X,Y: Integer;
begin
Image1.Canvas.LineTo(Mouse.CursorPos.X,Mouse.CursorPos.Y);
end;

Note That it’s Not that
Accurate, Why?
Canvas
procedure TForm2.Image1Click(Sender: TObject);
Var X,Y: Integer;
begin
Image1.Canvas.LineTo(Mouse.CursorPos.X Form2.Left,Mouse.CursorPos.Y - Form2.Top);
end;

Note Now that it’s So
Much More Accurate
Canvas - TextOut
• This will help u for ur next exercise
procedure TForm2103232.Button1Click(Sender: TObject);
begin
Form2103232.Canvas.TextOut(20,20,'Crushed ');
Canvas.TextOut(30,20,'Crushed ');
end;
Canvas - TextOut
• This will help u for ur next exercise
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Canvas.Font.Size:= 14;
Form2.Canvas.Font.Color:= clRed;
Form2.Canvas.Font.Orientation:= 100;
Form2.Canvas.TextOut(20,20,'Crushed ');
end;
Canvas - TextOut
• This will help u for ur next exercise

procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I:= 0 to 10 do
Begin
Form2.Canvas.Font.Size:= 14;
Form2.Canvas.Font.Color:= clRed;
Form2.Canvas.Font.Orientation:= 100 + i*100;
Form2.Canvas.TextOut(150,100,'Crushed ');
End;
end;
Canvas - TextOut
• This will help u for ur next exercise

procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I:= 0 to 10 do
Begin
Form2.Canvas.Font.Size:= 14;
Form2.Canvas.Font.Color:= clRed;
Form2.Canvas.Font.Orientation:= 100 - i*100;
Form2.Canvas.TextOut(100,20,'Crushed ');
End;
end;
Canvas
• Let’s draw
Canvas
• This will help u for ur next exercise

// Returns the Mouse Cursor position on the X-Axis
Mouse.CursorPos.X
// Returns the Mouse Cursor position on the Y-Axis
Mouse.CursorPos.Y

// Now we can use it like the following
Canvas.LineTo(Mouse.CursorPos.X,Mouse.CursorPos.Y);
Canvas
• Let’s have this exercise:
– We have a “form” that contains an “Image”
• 1st: we want to draw in the “Image” as it’s in the direction of the four
“Arrow”s.
• 2nd: we want to draw a line every two clicks, (Not every click).
• 3rd: we want to draw a line in the same direction of the “Cursor” each
time the “Mouse” moves.
• 4th: Now, we’ll add a Timer & a ProgressBar (more on this when u finish)
See you!

More Related Content

Similar to Delphi L06 GDI Drawing

C++ Windows Forms L08 - GDI P1
C++ Windows Forms L08 - GDI P1 C++ Windows Forms L08 - GDI P1
C++ Windows Forms L08 - GDI P1 Mohammad Shaker
 
Complete Tutorial for 3d Text on Photos
Complete Tutorial for 3d Text on PhotosComplete Tutorial for 3d Text on Photos
Complete Tutorial for 3d Text on PhotosPj Dhanoa
 
Please make the complete program, distinguishing between each class .pdf
Please make the complete program, distinguishing between each class .pdfPlease make the complete program, distinguishing between each class .pdf
Please make the complete program, distinguishing between each class .pdffaxteldelhi
 
How to Create Vintage Type Text Effect in Photoshop
How to Create Vintage Type Text Effect in PhotoshopHow to Create Vintage Type Text Effect in Photoshop
How to Create Vintage Type Text Effect in PhotoshopMetrodesk
 
Practical ActivitiesWeek06lab08-1.pngPractical Activities.docx
Practical ActivitiesWeek06lab08-1.pngPractical Activities.docxPractical ActivitiesWeek06lab08-1.pngPractical Activities.docx
Practical ActivitiesWeek06lab08-1.pngPractical Activities.docxChantellPantoja184
 
Adobe photoshop cs4 keyboard shortcut
Adobe photoshop cs4 keyboard shortcutAdobe photoshop cs4 keyboard shortcut
Adobe photoshop cs4 keyboard shortcutJubair Ahmed Junjun
 
Photoshop Beginners Course
Photoshop Beginners CoursePhotoshop Beginners Course
Photoshop Beginners CourseMiracleOdion
 
On the tomcat drive in folder cosc210 you will find file named Paint.docx
On the tomcat drive in folder cosc210 you will find file named Paint.docxOn the tomcat drive in folder cosc210 you will find file named Paint.docx
On the tomcat drive in folder cosc210 you will find file named Paint.docxdunhamadell
 
Adobe Illustrator CS5 Keyboard Shortcuts
Adobe Illustrator CS5 Keyboard Shortcuts Adobe Illustrator CS5 Keyboard Shortcuts
Adobe Illustrator CS5 Keyboard Shortcuts Fanus van Straten
 
Creative Coding 1 - 1 Introduction
Creative Coding 1 - 1 IntroductionCreative Coding 1 - 1 Introduction
Creative Coding 1 - 1 IntroductionTill Nagel
 
Photoshop Tutorial Booklet
Photoshop Tutorial BookletPhotoshop Tutorial Booklet
Photoshop Tutorial BookletGraveney School
 
Adobe illustrator c55 keyboard shortcut.
Adobe illustrator c55 keyboard shortcut.Adobe illustrator c55 keyboard shortcut.
Adobe illustrator c55 keyboard shortcut.Jubair Ahmed Junjun
 
What is Web Designing by Zakaria
What is Web Designing by ZakariaWhat is Web Designing by Zakaria
What is Web Designing by ZakariaZakaria Abada
 

Similar to Delphi L06 GDI Drawing (20)

Chapter 13
Chapter 13Chapter 13
Chapter 13
 
C++ Windows Forms L08 - GDI P1
C++ Windows Forms L08 - GDI P1 C++ Windows Forms L08 - GDI P1
C++ Windows Forms L08 - GDI P1
 
Scmad Chapter06
Scmad Chapter06Scmad Chapter06
Scmad Chapter06
 
dr_1
dr_1dr_1
dr_1
 
dr_1
dr_1dr_1
dr_1
 
Complete Tutorial for 3d Text on Photos
Complete Tutorial for 3d Text on PhotosComplete Tutorial for 3d Text on Photos
Complete Tutorial for 3d Text on Photos
 
Owl Clock
Owl ClockOwl Clock
Owl Clock
 
Please make the complete program, distinguishing between each class .pdf
Please make the complete program, distinguishing between each class .pdfPlease make the complete program, distinguishing between each class .pdf
Please make the complete program, distinguishing between each class .pdf
 
How to Create Vintage Type Text Effect in Photoshop
How to Create Vintage Type Text Effect in PhotoshopHow to Create Vintage Type Text Effect in Photoshop
How to Create Vintage Type Text Effect in Photoshop
 
Practical ActivitiesWeek06lab08-1.pngPractical Activities.docx
Practical ActivitiesWeek06lab08-1.pngPractical Activities.docxPractical ActivitiesWeek06lab08-1.pngPractical Activities.docx
Practical ActivitiesWeek06lab08-1.pngPractical Activities.docx
 
Adobe photoshop cs4 keyboard shortcut
Adobe photoshop cs4 keyboard shortcutAdobe photoshop cs4 keyboard shortcut
Adobe photoshop cs4 keyboard shortcut
 
Photoshop Beginners Course
Photoshop Beginners CoursePhotoshop Beginners Course
Photoshop Beginners Course
 
On the tomcat drive in folder cosc210 you will find file named Paint.docx
On the tomcat drive in folder cosc210 you will find file named Paint.docxOn the tomcat drive in folder cosc210 you will find file named Paint.docx
On the tomcat drive in folder cosc210 you will find file named Paint.docx
 
Photoshop
PhotoshopPhotoshop
Photoshop
 
Adobe Illustrator CS5 Keyboard Shortcuts
Adobe Illustrator CS5 Keyboard Shortcuts Adobe Illustrator CS5 Keyboard Shortcuts
Adobe Illustrator CS5 Keyboard Shortcuts
 
Creative Coding 1 - 1 Introduction
Creative Coding 1 - 1 IntroductionCreative Coding 1 - 1 Introduction
Creative Coding 1 - 1 Introduction
 
Inkscape - A brief
Inkscape - A briefInkscape - A brief
Inkscape - A brief
 
Photoshop Tutorial Booklet
Photoshop Tutorial BookletPhotoshop Tutorial Booklet
Photoshop Tutorial Booklet
 
Adobe illustrator c55 keyboard shortcut.
Adobe illustrator c55 keyboard shortcut.Adobe illustrator c55 keyboard shortcut.
Adobe illustrator c55 keyboard shortcut.
 
What is Web Designing by Zakaria
What is Web Designing by ZakariaWhat is Web Designing by Zakaria
What is Web Designing by Zakaria
 

More from Mohammad Shaker

12 Rules You Should to Know as a Syrian Graduate
12 Rules You Should to Know as a Syrian Graduate12 Rules You Should to Know as a Syrian Graduate
12 Rules You Should to Know as a Syrian GraduateMohammad Shaker
 
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]Mohammad Shaker
 
Interaction Design L06 - Tricks with Psychology
Interaction Design L06 - Tricks with PsychologyInteraction Design L06 - Tricks with Psychology
Interaction Design L06 - Tricks with PsychologyMohammad Shaker
 
Short, Matters, Love - Passioneers Event 2015
Short, Matters, Love -  Passioneers Event 2015Short, Matters, Love -  Passioneers Event 2015
Short, Matters, Love - Passioneers Event 2015Mohammad Shaker
 
Unity L01 - Game Development
Unity L01 - Game DevelopmentUnity L01 - Game Development
Unity L01 - Game DevelopmentMohammad Shaker
 
Interaction Design L03 - Color
Interaction Design L03 - ColorInteraction Design L03 - Color
Interaction Design L03 - ColorMohammad Shaker
 
Interaction Design L05 - Typography
Interaction Design L05 - TypographyInteraction Design L05 - Typography
Interaction Design L05 - TypographyMohammad Shaker
 
Interaction Design L04 - Materialise and Coupling
Interaction Design L04 - Materialise and CouplingInteraction Design L04 - Materialise and Coupling
Interaction Design L04 - Materialise and CouplingMohammad Shaker
 
Android L04 - Notifications and Threading
Android L04 - Notifications and ThreadingAndroid L04 - Notifications and Threading
Android L04 - Notifications and ThreadingMohammad Shaker
 
Android L09 - Windows Phone and iOS
Android L09 - Windows Phone and iOSAndroid L09 - Windows Phone and iOS
Android L09 - Windows Phone and iOSMohammad Shaker
 
Interaction Design L01 - Mobile Constraints
Interaction Design L01 - Mobile ConstraintsInteraction Design L01 - Mobile Constraints
Interaction Design L01 - Mobile ConstraintsMohammad Shaker
 
Interaction Design L02 - Pragnanz and Grids
Interaction Design L02 - Pragnanz and GridsInteraction Design L02 - Pragnanz and Grids
Interaction Design L02 - Pragnanz and GridsMohammad Shaker
 
Android L10 - Stores and Gaming
Android L10 - Stores and GamingAndroid L10 - Stores and Gaming
Android L10 - Stores and GamingMohammad Shaker
 
Android L06 - Cloud / Parse
Android L06 - Cloud / ParseAndroid L06 - Cloud / Parse
Android L06 - Cloud / ParseMohammad Shaker
 
Android L08 - Google Maps and Utilities
Android L08 - Google Maps and UtilitiesAndroid L08 - Google Maps and Utilities
Android L08 - Google Maps and UtilitiesMohammad Shaker
 
Android L03 - Styles and Themes
Android L03 - Styles and Themes Android L03 - Styles and Themes
Android L03 - Styles and Themes Mohammad Shaker
 
Android L02 - Activities and Adapters
Android L02 - Activities and AdaptersAndroid L02 - Activities and Adapters
Android L02 - Activities and AdaptersMohammad Shaker
 
Indie Series 03: Becoming an Indie
Indie Series 03: Becoming an IndieIndie Series 03: Becoming an Indie
Indie Series 03: Becoming an IndieMohammad Shaker
 

More from Mohammad Shaker (20)

12 Rules You Should to Know as a Syrian Graduate
12 Rules You Should to Know as a Syrian Graduate12 Rules You Should to Know as a Syrian Graduate
12 Rules You Should to Know as a Syrian Graduate
 
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]
Ultra Fast, Cross Genre, Procedural Content Generation in Games [Master Thesis]
 
Interaction Design L06 - Tricks with Psychology
Interaction Design L06 - Tricks with PsychologyInteraction Design L06 - Tricks with Psychology
Interaction Design L06 - Tricks with Psychology
 
Short, Matters, Love - Passioneers Event 2015
Short, Matters, Love -  Passioneers Event 2015Short, Matters, Love -  Passioneers Event 2015
Short, Matters, Love - Passioneers Event 2015
 
Unity L01 - Game Development
Unity L01 - Game DevelopmentUnity L01 - Game Development
Unity L01 - Game Development
 
Interaction Design L03 - Color
Interaction Design L03 - ColorInteraction Design L03 - Color
Interaction Design L03 - Color
 
Interaction Design L05 - Typography
Interaction Design L05 - TypographyInteraction Design L05 - Typography
Interaction Design L05 - Typography
 
Interaction Design L04 - Materialise and Coupling
Interaction Design L04 - Materialise and CouplingInteraction Design L04 - Materialise and Coupling
Interaction Design L04 - Materialise and Coupling
 
Android L05 - Storage
Android L05 - StorageAndroid L05 - Storage
Android L05 - Storage
 
Android L04 - Notifications and Threading
Android L04 - Notifications and ThreadingAndroid L04 - Notifications and Threading
Android L04 - Notifications and Threading
 
Android L09 - Windows Phone and iOS
Android L09 - Windows Phone and iOSAndroid L09 - Windows Phone and iOS
Android L09 - Windows Phone and iOS
 
Interaction Design L01 - Mobile Constraints
Interaction Design L01 - Mobile ConstraintsInteraction Design L01 - Mobile Constraints
Interaction Design L01 - Mobile Constraints
 
Interaction Design L02 - Pragnanz and Grids
Interaction Design L02 - Pragnanz and GridsInteraction Design L02 - Pragnanz and Grids
Interaction Design L02 - Pragnanz and Grids
 
Android L10 - Stores and Gaming
Android L10 - Stores and GamingAndroid L10 - Stores and Gaming
Android L10 - Stores and Gaming
 
Android L06 - Cloud / Parse
Android L06 - Cloud / ParseAndroid L06 - Cloud / Parse
Android L06 - Cloud / Parse
 
Android L08 - Google Maps and Utilities
Android L08 - Google Maps and UtilitiesAndroid L08 - Google Maps and Utilities
Android L08 - Google Maps and Utilities
 
Android L03 - Styles and Themes
Android L03 - Styles and Themes Android L03 - Styles and Themes
Android L03 - Styles and Themes
 
Android L02 - Activities and Adapters
Android L02 - Activities and AdaptersAndroid L02 - Activities and Adapters
Android L02 - Activities and Adapters
 
Android L01 - Warm Up
Android L01 - Warm UpAndroid L01 - Warm Up
Android L01 - Warm Up
 
Indie Series 03: Becoming an Indie
Indie Series 03: Becoming an IndieIndie Series 03: Becoming an Indie
Indie Series 03: Becoming an Indie
 

Recently uploaded

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Recently uploaded (20)

The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Delphi L06 GDI Drawing

  • 1. Intro to Event-driven Programming and Forms with Delphi L06 – GDI Drawing Mohammad Shaker mohammadshakergtr.wordpress.com Intro to Event-driven Programming and Forms with Delphi @ZGTRShaker 2010, 2011, 2012
  • 2.
  • 3. Randomize and Color procedure TForm2.Button1Click(Sender: TObject); begin Form2.Color:= ClRed; end;
  • 5. Randomize and Color procedure TForm2.Button1Click(Sender: TObject); var i:integer; begin i:= Random(100); Form2.Color:= i; end;
  • 6. Randomize and Color procedure TForm2.Button1Click(Sender: TObject); var i:integer; begin i:= Random(RandSeed); Form2.Color:= i; end;
  • 7. Drawing • What’s a Canvas? • Canvas Methods Canvas.Method() // Form Object Object.Canvas.Method() // An Object
  • 8. Canvas • It’s an “Object” • It’s used mainly for “drawing” • Canvas: – Can be used as a “Variable”: • Can: tCanvas – Can be used with another “Component”s: • Image1.Canvas • Form1.Canvas
  • 9. Canvas • Move the start point to a specific point. Canvas.MoveTo(x,y) • Move the start point to a specific point. • Draw a line to the specific point. Canvas.LineTo(x,y) • Note that “LineTo” contains “MoveTo” also.
  • 11. Canvas - functions //Canvas.Pen Canvas.Pen.color:= ClBlack; //Canvas.Pen Form1.Canvas.Pen.color:= ClBlack;
  • 12. Canvas - functions Canvas.Pen.Width:= 10; Form1.Canvas.Pen.Width:= 10;
  • 13. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); begin //Canvas.Pen Canvas.Pen.color:= clRed; Canvas.Pen.Width:= 10; Image1.Canvas.LineTo(30,120); end;
  • 14. Canvas - functions Note That is Not what we want
  • 15. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); begin Image1.Canvas.LineTo(30,120); Canvas.Pen.color:= clRed; Canvas.Pen.Width:= 10; Canvas.LineTo(0,120); end;
  • 20. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); Var X1,X2,Y1,Y2: Integer; begin X1:= 10; X2:= 20; Y1:= 30; Y2:= 40; Canvas.Rectangle(X1,Y1,X2,Y2); end;
  • 22. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); Var X1,X2,Y1,Y2: Integer; begin X1:= 0; X2:= 20; Y1:= 0; Y2:= 40; Image1.Canvas.Rectangle(X1,Y1,X2,Y2); end;
  • 23. Canvas - functions Notice The Difference
  • 24. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); Var X1,X2,Y1,Y2: Integer; begin X1:= 0; X2:= 60; Y1:= 0; Y2:= 40; Image1.Canvas.Ellipse(X1,Y1,X2,Y2); end;
  • 26. How To Draw A Circle? procedure TForm2.Button1Click(Sender: TObject); Var X1,X2,Y1,Y2: Integer; begin X1:= 0; X2:= 60; Y1:= 0; Y2:= 60; Image1.Canvas.Ellipse(X1,Y1,X2,Y2); end;
  • 27. How To Draw A Circle?
  • 28. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); begin //Canvas.Pen Image1.Canvas.Pen.color:= ClRed; Image1.Canvas.Pen.Width:= 10; Image1.Canvas.LineTo(30,120); end;
  • 29. Canvas - functions Now, That’s Right ;)
  • 30. Canvas - functions Canvas.Brush; procedure TForm2.Button1Click(Sender: TObject); begin Image1.Canvas.Pen.color:= clGray; Image1.Canvas.Pen.Width:= 5; Image1.Canvas.Brush.Color:= clRed; Image1.Canvas.Rectangle(10,10,100,100); end;
  • 32. Canvas - functions Canvas.Brush; procedure TForm2.Button1Click(Sender: TObject); begin Image1.Canvas.Pen.color:= clGray; Image1.Canvas.Pen.Width:= 5; Image1.Canvas.Brush.Color:= clRed; Image1.Canvas.Rectangle(10,10,100,100); Image1.Canvas.Ellipse(10,10,150,150); end;
  • 34. Canvas - functions procedure TForm2.Button1Click(Sender: TObject); begin Image1.Canvas.Pen.color:= clGray; Image1.Canvas.Pen.Width:= 5; Image1.Canvas.Brush.Color:= clRed; Image1.Canvas.Rectangle(10,10,100,100); Image1.Canvas.Brush.Color:= clGreen; Image1.Canvas.Ellipse(10,10,150,150); end;
  • 36. Common Canvas Prop. Delphi help Properties Descriptions Font Specifies the font to use when writing text on the image. Set the properties of the TFont object to specify the font face, color, size, and style of the font. Brush Determines the color and pattern the canvas uses for filling graphical shapes and backgrounds. Set the properties of the TBrush object to specify the color and pattern or bitmap to use when filling in spaces on the canvas. Pen Specifies the kind of pen the canvas uses for drawing lines and outlining shapes. Set the properties of the TPen object to specify the color, style, width, and mode of the pen. PenPos Specifies the current drawing position of the pen. Pixels Specifies the color of the area of pixels within the current ClipRect.
  • 37. Common Canvas methods Delphi help Method Descriptions Arc Draws an arc on the image along the perimeter of the ellipse bounded by the specified rectangle. Chord Draws a closed figure represented by the intersection of a line and an ellipse. CopyRect Copies part of an image from another canvas into the canvas. Draw Renders the graphic object specified by the Graphic parameter on the canvas at the location given by the coordinates (X, Y). Ellipse Draws the ellipse defined by a bounding rectangle on the canvas. FillRect Fills the specified rectangle on the canvas using the current brush. FloodFill Fills an area of the canvas using the current brush. (VCL only) FrameRect Draws a rectangle using the Brush of the canvas to draw the border. (VCL only)
  • 38. Common Canvas methods Delphi help LineTo MoveTo Draws a line on the canvas from PenPos to the point specified by X and Y, and sets the pen position to (X, Y). Changes the current drawing position to the point (X,Y). Pie Draws a pie-shaped the section of the ellipse bounded by the rectangle (X1, Y1) and (X2, Y2) on the canvas. Polygon Draws a series of lines on the canvas connecting the points passed in and closing the shape by drawing a line from the last point to the first point. Polyline Draws a series of lines on the canvas with the current pen, connecting each of the points passed to it in Points. Rectangle Draws a rectangle on the canvas with its upper left corner at the point (X1, Y1) and its lower right corner at the point (X2, Y2). Use Rectangle to draw a box using Pen and fill it using Brush.
  • 39. Common Canvas methods Delphi help RoundRect Draws a rectangle with rounded corners on the canvas. StretchDraw Draws a graphic on the canvas so that the image fits in the specified rectangle. The graphic image may need to change its magnitude or aspect ratio to fit. TextHeight, TextWidth Returns the height and width, respectively, of a string in the current font. Height includes leading between lines. TextOut Writes a string on the canvas, starting at the point (X,Y), and then updates the PenPos to the end of the string. TextRect Writes a string inside a region; any portions of the string that fall outside the region do not appear
  • 40. Canvas procedure TForm2.Image1Click(Sender: TObject); Var X,Y: Integer; begin Image1.Canvas.LineTo(Mouse.CursorPos.X,Mouse.CursorPos.Y); end; Note That it’s Not that Accurate, Why?
  • 41. Canvas procedure TForm2.Image1Click(Sender: TObject); Var X,Y: Integer; begin Image1.Canvas.LineTo(Mouse.CursorPos.X Form2.Left,Mouse.CursorPos.Y - Form2.Top); end; Note Now that it’s So Much More Accurate
  • 42. Canvas - TextOut • This will help u for ur next exercise procedure TForm2103232.Button1Click(Sender: TObject); begin Form2103232.Canvas.TextOut(20,20,'Crushed '); Canvas.TextOut(30,20,'Crushed '); end;
  • 43. Canvas - TextOut • This will help u for ur next exercise procedure TForm2.Button1Click(Sender: TObject); begin Form2.Canvas.Font.Size:= 14; Form2.Canvas.Font.Color:= clRed; Form2.Canvas.Font.Orientation:= 100; Form2.Canvas.TextOut(20,20,'Crushed '); end;
  • 44. Canvas - TextOut • This will help u for ur next exercise procedure TForm2.Button1Click(Sender: TObject); var I: Integer; begin for I:= 0 to 10 do Begin Form2.Canvas.Font.Size:= 14; Form2.Canvas.Font.Color:= clRed; Form2.Canvas.Font.Orientation:= 100 + i*100; Form2.Canvas.TextOut(150,100,'Crushed '); End; end;
  • 45. Canvas - TextOut • This will help u for ur next exercise procedure TForm2.Button1Click(Sender: TObject); var I: Integer; begin for I:= 0 to 10 do Begin Form2.Canvas.Font.Size:= 14; Form2.Canvas.Font.Color:= clRed; Form2.Canvas.Font.Orientation:= 100 - i*100; Form2.Canvas.TextOut(100,20,'Crushed '); End; end;
  • 47. Canvas • This will help u for ur next exercise // Returns the Mouse Cursor position on the X-Axis Mouse.CursorPos.X // Returns the Mouse Cursor position on the Y-Axis Mouse.CursorPos.Y // Now we can use it like the following Canvas.LineTo(Mouse.CursorPos.X,Mouse.CursorPos.Y);
  • 48. Canvas • Let’s have this exercise: – We have a “form” that contains an “Image” • 1st: we want to draw in the “Image” as it’s in the direction of the four “Arrow”s. • 2nd: we want to draw a line every two clicks, (Not every click). • 3rd: we want to draw a line in the same direction of the “Cursor” each time the “Mouse” moves. • 4th: Now, we’ll add a Timer & a ProgressBar (more on this when u finish)