Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Draws in Paintbox

Posted on 2006-06-29
Medium Priority
776 Views
Hello,

I'm trying to do a buttin that when pressed, using a paintbox, draw a big triangle, and inside of this triangle another one but with half of the size and so on... until it makes just one point... When I tryed to do this PaintBox1.Canvas.MoveTo(x/2,0); it encountered an error "Incompatible types: 'Integer' and 'Extended'"...
Can anyone help me plz??
0
Question by:plinho
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 3
• 3

LVL 26

Accepted Solution

Russell Libby earned 200 total points
ID: 17014985
You need to use  one of the following to return an integer result (you can't use floating point math on a canvas)

x div 2, 0
Round(x / 2)
Trunc(x / 2)

Regards,
Russell

0

Author Comment

ID: 17020809
=], thanks rllibby!!
0

Author Comment

ID: 17021901
by the way.... do you know how to make a triangle that has all the sides the same size, 60Â°, I don't know the name in english =/, using paintbox?
0

LVL 26

Expert Comment

ID: 17021967

procedure TForm1.PaintBox1Paint(Sender: TObject);
var  ptTriangle:    Array [0..3] of TPoint;
dwSize:        Integer;
dwX:           Integer;
dwY:           Integer;
begin

// Need to form a square
if (PaintBox1.Width > PaintBox1.Height) then
dwSize:=PaintBox1.Height
else
dwSize:=PaintBox1.Width;

// Leave a small border of 5px each side
Dec(dwSize, 10);

// Calculate the remaining borders
dwX:=(PaintBox1.Width - dwSize) div 2;
dwY:=(PaintBox1.Height - dwSize) div 2;

// Triangle with equal angles
ptTriangle[0]:=Point(dwX, dwY + dwSize);
ptTriangle[1]:=Point(dwX + (dwSize div 2), dwY);
ptTriangle[2]:=Point(dwX + dwSize, dwY + dwSize);
ptTriangle[3]:=Point(dwX, dwY + dwSize);

// Use polygon function
PaintBox1.Canvas.Polygon(ptTriangle);

end;
0

LVL 26

Expert Comment

ID: 17021995

Btw, its an "equilateral triangle", You will also find that by decrementing the size, you can draw triangles within the triangle (like your original question)

procedure TForm1.PaintBox1Paint(Sender: TObject);
var  ptTriangle:    Array [0..3] of TPoint;
dwSize:        Integer;
dwX:           Integer;
dwY:           Integer;
begin

// Fill canvas with white brush
PaintBox1.Canvas.Brush.Color:=clWhite;
PaintBox1.Canvas.FillRect(Rect(0, 0, PaintBox1.Width, PaintBox1.Height));

// Need to form a square
if (PaintBox1.Width > PaintBox1.Height) then
dwSize:=PaintBox1.Height
else
dwSize:=PaintBox1.Width;

// Leave a small border of 5px each side
Dec(dwSize, 10);

// While size > 0
while (dwSize > 20) do
begin
// Calculate the remaining borders
dwX:=(PaintBox1.Width - dwSize) div 2;
dwY:=(PaintBox1.Height - dwSize) div 2;
// Triangle with equal angles
ptTriangle[0]:=Point(dwX, dwY + dwSize);
ptTriangle[1]:=Point(dwX + (dwSize div 2), dwY);
ptTriangle[2]:=Point(dwX + dwSize, dwY + dwSize);
ptTriangle[3]:=Point(dwX, dwY + dwSize);
// Use polygon function
PaintBox1.Canvas.Polygon(ptTriangle);
// Cut size in half
dwSize:=dwSize div 2;
end;

end;

0

Author Comment

ID: 17025528
thanks ;)
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi projâ€¦
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGridâ€¦
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on tâ€¦