átméretezése timage

átméretezése TImage

A program Timage, vagy inkább az MDI-forma. Mérete változó, attól függően, hogy az ablak méretét. Kezdetben Timage - láthatatlan. A probléma az, hogy ha például csökkenti a ablakot, majd rajzolni valamit a TImage láthatatlan, lerajzolását a régi méretét. Próbáltam és Update és újrarajzolás és Refresh - nulla eredményt! Lehet, hogy valaki tudja, hogyan kell elkerülni! Előre is köszönöm!

> Csökkentse az ablakot, majd rajzolni valamit egy láthatatlan TImage

csökkentése után az ablak első próbálja megváltoztatni kép
és akkor majd felhívni, mint ez:

eljárás TForm1.FormResize (Sender: TObject);
kezdődik
DoubleBuffered: = true;
image1.visible: = false;
image1.stretch: = true;
image1.top:=0;
image1.left: = 0;
image1.width: = clientWidth;
image1.height: = ClientHeight;
image1.picture.bitmap.width: = clientWidth;
image1.picture.bitmap.height: = ClientHeight;
image1.picture.loadFromFile ( "image.jpg");
image1.visible: = true;
végén;

vagy még írni, hogy mit csinál valójában

Itt is, vontam képkeret
majd amikor image1.stretch = true
minden, ami rajzolt a vásznon deformálja a betöltött képet.

eljárás TForm1.FormResize (Sender: TObject);
var I, H, W: integer;
kezdődik
DoubleBuffered: = true;
image1.visible: = false;
//image1.stretch:=true;
image1.top:=0;
image1.left: = 0;

// ha a betöltött kép, akkor ezeket a sorokat lehet távolítani
//image1.picture.bitmap.width:=clientWidth;
//image1.picture.bitmap.height:=clientHeight;

// keret:
i: = 1-től szélesség div 12 nem kezdődik
image1.canvas.Brush.color: =
RGB (abs (TRUNC (255 * cos (I / 32))), TRUNC (255 * sin (I / 12)), TRUNC (255 * sin (I / 48)));
image1.canvas.frameRect (rect (i, i, clientWidth-i, ClientHeight-i));
végén;

Ha jól értem, a kép el van vágva ugyanazon téglalap ClipRect paraméter nem változik, ha a kép méretét. Próbálja megváltoztatni a beállításokat Timage.canvas.picture.bitmap.height és szélessége mérete és timage.height timage.width

Memória: 0,73 MB
Idő: 0.048 c