Anonymní profil Navara – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Navara – Programujte.comAnonymní profil Navara – Programujte.com

 

Příspěvky odeslané z IP adresy 37.188.231.–

Navara
Delphi › Zvětšení TImage nezvětší pou…
5. 6. 2013   #177363

 Zdravím,

mám problém s vykreslování na Canvas u TImage ve chvíli, kdy zvětším velikost toho TImage. Canvas, nebo alespoň jeho užitečná plocha zůstane v původní velikosti. Navíc když dojde k tomuto stavu kdy Canvas nezabírá celou plochu TImage, dochází při překreslování k nepříjemnému problikávání při překreslování (ale problikává celá velikost TImage).

Jediné, co pomáhá k tomu aby po zvětšení TImage se dala použít celá plocha pro kreslení na jeho Canvas, je provést Obrazek.Destroy; a znovu Obrazek.Create(Form);, což je asi krajně nevhodný způsob, zvláště když překreslování provádí i procedura Obrazek.OnMouseMove;

Popíšu zhruba jak zdroj funguje:

procedure VykreslitCanvasObrazku(WidthObr, HeightObr: Integer);
var
 ContainerCanvasu: TBitmap;
begin
 ContainerObrazku := TBitmap.Create;
 ContainerObrazku.Width := WidthObr;
 ContainerObrazku.Height := HeightObr;
 
 Obrazek.Width := WidthObr;
 Obrazek.Height := Height;
 
 ContainerObrazku.Canvas.Rectangle(0,0,Obrazek.Width, ObrazekLeft); //Vymazat stávající obr.
 ContainerObrazku.Draw(NejakeX, NejakeY, NejakeGraphics); //načíst nějaké obrazky

 Obrazek.Canvas.Draw(0,0,ContainerObrazku); //vykreslení
end;

Vytvoření příprva pro vykreslení z TBitmap je v pořádku, nastavení rozměrů i rozměrů TImage jménem Obrazek také proběhne (je vyzkoušeno pomocí showmessage že skutečné rozměry se opravdu upravují), ale ve chvíli, kdy se provádí Obrazek.Canvas.Draw(0,0,ContainerObrazku); a nové rozměry jsou větší než při minulém využití procedury, dojde k tomu, že se aktualizuje pouze Canvas ve velikosti, v jaké byl Obrazek před zvětšením a zbytek obrázku, ta část o kterou se Obrazek zvětšil, je nevykreslená, průhledná... funguje pouze výřez, který má velikost původní velikosti Obrazku.

Neporadil by tedy prosím někdo, jak Canvasu domluvit, aby pro vykreslování využíval celou plochu TImage, jemuž Canvas náleží? 

Děkuji.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý