Cześć, od niedawna pisze programik graficzny i teraz pracuję nad wprowadzeniem opcji lupy (coś podobnego jak w Paint). Napisałem procedurkę która powiększa bitmapę o daną ilość razy. Wykorzystałem do tego tablicę dynamiczną. Pewnie można to było zrobić lepiej ale ja wypociłem coś takiego:
procedure TForm1.Powieksz(powiekszenie :Integer; Zrodlo :TBitmap; Kanwa :TCanvas; x,y :integer );
var Bmp : Array of Array of TColor;
ZoomBmp : TBitmap;
a,b, xx, yy, wys, szer : integer;
Begin
xx:=0 ; yy:=0;
wys:=Zrodlo.Height;
szer:=zrodlo.Width;
ZoomBmp:=TBitmap.Create;
ZoomBmp.Width:=Szer*powiekszenie;
ZoomBmp.Height:=Wys*powiekszenie;
SetLength(Bmp,Wys+1,Szer+1);
For a:=0 to Wys do
begin
For b:=0 to Szer do
Bmp[a][b]:=Zrodlo.Canvas.Pixels[b,a];
end;
For a:=0 to Wys do
begin
For b:=0 to Szer do
begin
ZoomBMP.canvas.Brush.color:=bmp[a][b];
ZoomBMP.canvas.Pen.Style:=psClear;
ZoomBMP.canvas.Rectangle(xx-1,yy-1,b*powiekszenie,a*powiekszenie);
xx:=b*powiekszenie;
end;
yy:=a*powiekszenie;
end;
Kanwa.Draw(X,Y,ZoomBMP);
End;
Wszystko działa. Ale teraz pytanie, jak wykombinować żeby rysowanie po tej powiększonej bitmapce powodowało jednocześnie rysowanie tego samego w odpowiedniej skali na tej normalnej? Może trochę tu pokaleczyłem polszczyzne ale chyba wiadomo o co chodzi... Who knows something?
No, chyba że jest jakiś komponencik?