Solved

# qow 12: how to draw an egg on a canvas?

Posted on 2002-04-01
851 Views
Last Modified: 2010-05-18
hi experts,

i am starting a new quest: qow = question of the week :-)
each week i will introduce a new simple? question.

now qow 12
(one week later, i was absend)

the first working solution will get the points (a graded).

sorry, top 15 experts, you are not allowed to solve this
q, only other can solve this question :-(

well the question is:
how to draw an egg on a canvas??

a little sample is needed

let see

meikl ;-)
0
Question by:kretzschmar
• 3
• 2
• 2
• +4
11 Comments

LVL 17

Expert Comment

hehe very seasonal meikl :)

er poached egg on toast :

var
r : trect;
begin
r.Left := 5;
r.top := 5;
r.Right := 110;
r.Bottom := 105;
form1.canvas.FrameRect(r);
form1.canvas.Ellipse(10,10,100,100);
form1.Canvas.Brush.Color := clYellow;
form1.canvas.Ellipse(30,30,80,80);
end;
0

LVL 9

Expert Comment

Whay not red ? :o)
0

LVL 17

Expert Comment

er what do you feed your chickens? <G>
0

LVL 6

Expert Comment

with form1.canvas do
begin
Brush.Color := clYellow;
Brush.Style := bsDiagCross;
Ellipse(0,0,210,350);
MoveTo(13,90);
Lineto(210,210);
MoveTo(6,120);
Lineto(206,240);
Brush.Color := clBlue;
Brush.Style := bsSolid;
FloodFill(14,94,ClBlack,fsBorder);
Brush.Style := bsClear;
Font.Size:=12;
TextOut(220,0,'HAPPY EASTER!!');
end;

Good luck!!
0

LVL 3

Expert Comment

Hi,

he he he.... this is as simple as it gets

it's fun!
t.
procedure TForm1.EggButtonClick(Sender: TObject);

var
x,y:integer;

begin
x:=10; //Pos
y:=10; //Pos
image1. canvas.brush.color:=random(256*256*256);//color random
image1.canvas.ellipse(x,y,x+(200), y+(120)); //ellipse size
//Image1 = Transparent:=False
end;
end.
0

LVL 6

Expert Comment

// _________________________________________________________________________
procedure TForm1.eggTop(l,t,r,b: integer);
var
half: integer;
begin
half := t+(b-t) div 2;
form1.Canvas.Arc(l,t,r,b,l,half,r,half);
end;

// _________________________________________________________________________
procedure TForm1.eggBottom(l,t,r,b: integer);
var
half: integer;
begin
half := t+(b-t) div 2;
form1.Canvas.Arc(l,t,r,b,r,half,l,half);
end;

// _________________________________________________________________________
procedure TForm1.egg(l,t,r,b: integer; egginess: integer);
var
stretch: integer;
begin
stretch := (egginess*(b-t)) div 100;
EggTop(l,t+stretch,r,b);
EggBottom(l,t,r,b+stretch);
form1.Canvas.Brush.Color := clBlue;
form1.Canvas.FloodFill((r-l) div 2,(b-t) div 2,form1.Canvas.Pen.Color,fsBorder);
end;

// _________________________________________________________________________
procedure TForm1.Button1Click(Sender: TObject);
begin
// Left, top, width, height, egginess
egg(50,50,300,400,20);
end;

0

LVL 9

Expert Comment

//hehe very seasonal meikl :)

inthe, how I know the traditional Eastern Egg is red :P
0

LVL 1

Accepted Solution

MBo earned 25 total points
procedure TForm1.Button2Click(Sender: TObject);
var
rgn:hRgn;
pts:array[0..6] of TPoint;
x1,y,x2,deltax,deltay:integer;
begin
x1:=100; x2:=400; y:=200; deltax:=5; deltay:=100;
Canvas.brush.Color:=clRed;
//Canvas.Pen.Color:=clRed; //for canvas.floodfill
pts[0].x:=x1;            pts[0].y:=y;
pts[1].x:=x1+deltax;     pts[1].y:=y-deltay;
pts[2].x:=x2-deltax;     pts[2].y:=y-2*deltay;
pts[3].x:=x2;            pts[3].y:=y;
pts[4].x:=x2-deltax;     pts[4].y:=y+2*deltay;
pts[5].x:=x1+deltax;     pts[5].y:=y+deltay;
pts[6].x:=x1;            pts[6].y:=y;

//simple and slow
//Canvas.PolyBezier(pts);
//Canvas.FloodFill(x1+100,y,clRed,fsBorder);

//faster
BeginPath(canvas.Handle);
PolyBezier(canvas.Handle,pts,7);
EndPath(canvas.Handle);
rgn:=PathToRegion(Canvas.Handle);
FillRgn(Canvas.handle,Rgn,Canvas.Brush.Handle);
DeleteObject(rgn);

end;
0

LVL 27

Author Comment

perfect :-))

as all know an egg isn't a ellipse or an egg on toast,
even there are some happy pictures, spcially from drdelphi :-))

well next week a new ?simple q?

thanks to all for participating on this quest

meikl ;-)
0

LVL 27

Author Comment

for zabada,

i post an additional q for you,
for your also correct egg

meikl ;-)
0

LVL 27

Author Comment

0

## Join & Write a Comment Already a member? Login.

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

#### 743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

#### Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!