Najprv k tomu kresleniu, lebo iba zmenou penu to asi nebude stacit. Robi sa to tak, ze vzdy ak kliknes na platno, uchovas si povodnu kresbu platna a kazdym pohybom mysi sa preklesli platno na predchadzajuci vzhlad a potom sa nakresli elipsa. Vytvori sa tak pozadovany dojem, akoby si kreslil meniacu sa elipsu (alebo iny utvar).
Do svojho projektu iba dopln nasledujuce:
Kód:
var
zaloha: TBitmap;
Kód:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:=x;
y1:=y;
Kreslenie:=True;
image1.Canvas.Pen.Width:=StrToInt(Edit1.Text);
Image1.Canvas.MoveTo(X,Y);
zaloha := TBitmap.Create;
zaloha.Assign( Image1.Picture );
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Image1.Canvas.Brush.Style:= bsClear;
if Shift = [ssLeft]then
case pis of
1:Image1.canvas.LineTo(X,Y);
2:begin
Image1.Canvas.Draw( 0, 0, zaloha );
Image1.Canvas.Pen.Color:=clwhite;
Image1.Canvas.Rectangle(x1,y1,x,y);
Image1.Canvas.Pen.Color:=farba;
Image1.Canvas.Ellipse(x1,y1,x,y);
end;
3:begin
Image1.Canvas.Draw( 0, 0, zaloha );
Image1.Canvas.Pen.Color:=farba;
Image1.Canvas.Ellipse(x1,y1,x,y);
end;
end;
if Shift = [ssRight] then Image1.Canvas.Ellipse(X-7,Y-7,X+7,Y+7);
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Kreslenie:=False;
zaloha.Free;
end;
// Vytvorenie a rusenie bitmapy zaloha by som ale radsej odporucal dat do OnCreate a OnDestroy formulara. Takto som ti to dal iba na ukazku, presun si to uz sam.
K problemu s unitomom TJPEGImage: ten sa zrejme nachadza az vo verzii Enterprice, takze ho zrejme legalnou cestou nezozenies. Napis nam, na co potrebujes prave tento unit, mozno ti dokazeme najst ine riesenie.