Zvětšení TImage nezvětší použitelnou plochu jeho Canvas – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zvětšení TImage nezvětší použitelnou plochu jeho Canvas – Delphi – Fórum – Programujte.comZvětšení TImage nezvětší použitelnou plochu jeho Canvas – Delphi – Fórum – Programujte.com

 

Navara
~ Anonymní uživatel
68 příspěvků
5. 6. 2013   #1
-
0
-

 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.

Nahlásit jako SPAM
IP: 37.188.231.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

TImage - transformace bitmapy — založil pan Hole

Zvetseni — založil Anonymní uživatel

Canvas — založil maral

 

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