[ Vdjuric @ 09.05.2005. 10:38 ] @
Postavio sam TImage preko cele MDI forme (Image1.AlClient:=true, na formi Form1) i u njega sam ucitao bmp. Problem se javlja kada se misem vrsi resize forme - ceo image treperi... U timage-u nisu ukljucene opcije tipa stretch/autosize/transparent, a slika je veca od velicine ekrana.
Kako ove prevazici? Ukljucio sam Form1.doublebuffered... :(

poz
[ bondja @ 09.05.2005. 13:26 ] @
TMDIForm = class(... )
public
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
. . .
end;

procedure TMDIForm.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result := 1;
edn;

Pozdrav!
[ Vdjuric @ 09.05.2005. 14:39 ] @
Citat:
bondja: TMDIForm = class(... )
public
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
. . .
end;

procedure TMDIForm.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result := 1;
edn;

Pozdrav!


Upravo sam probao i ovo, ali i dalje treperi :(
[ DeYo @ 09.05.2005. 15:11 ] @
Postavi panel na formu i njemu stavi align=alClient, pa na taj panel postavi sliku i njoj takodje alClient.

Imaces problem prilikom stvaranja MDI formi, verovatno ces morati da radis nesto tipa Panel1.Visible=false u OnCreate eventu, ali snaci ces se.

hint:
http://www.elitesecurity.org/tema/105078/0#680006
[ Nemanja Avramović @ 09.05.2005. 18:48 ] @
DoubleBuffered:=true; //ovo?
[ DeYo @ 10.05.2005. 13:13 ] @
Citat:
JaHvram: DoubleBuffered:=true; //ovo?


Procitaj topic do kraja.
DoubleBuffered ne radi. Poenta je u postavljanju slike na panel koji ce kontrolisati njeno iscrtavanje pa zato nece ni biti treperenja, blinkanja...
[ Vdjuric @ 10.05.2005. 14:21 ] @
Citat:
DeYo: Postavi panel na formu i njemu stavi align=alClient, pa na taj panel postavi sliku i njoj takodje alClient.

Imaces problem prilikom stvaranja MDI formi, verovatno ces morati da radis nesto tipa Panel1.Visible=false u OnCreate eventu, ali snaci ces se.

hint:
http://www.elitesecurity.org/tema/105078/0#680006


Treperenje se bitno smanjilo kada povecavam formu misem, a potpuno je nestalo kada smanjujem formu misem. Eh sad... kako da resim prikaz MDI formi ? Sve sto sam probao ne radi... Kako si ti to resio kada si imao slican problem?

Pozdrav & hvala puno svima na odgovorima :)
[ Srki_82 @ 10.05.2005. 17:59 ] @
Probao sam s panelom na formi (ne radim visible := true/false jer slika treba da je stalno vidljiva tj pozadina ako sam dobro shvatio). Panel je uvek velicine klijent prostora MDI forme (ili MDI child forme), a Image je uvek velicine klijent prostora Panela (sto mu dodje na isto ). Na rezoluciji 1024x768, slika velicine 1024x768, procesor Intel P4~2GHz, 512 Mb RAM, GeForce 6200 (full hardware accel.) se ne vidi nikakvo treperenje. Mozda koristis neku VEEELIKU sliku ili testiras program na nekom sporijem racunaru. Ako je to upitanju ili smanji sliku ili kupi bolji racunar.
[ Vdjuric @ 11.05.2005. 00:53 ] @
Citat:
Srki_82: Probao sam s panelom na formi (ne radim visible := true/false jer slika treba da je stalno vidljiva tj pozadina ako sam dobro shvatio). Panel je uvek velicine klijent prostora MDI forme (ili MDI child forme), a Image je uvek velicine klijent prostora Panela (sto mu dodje na isto :) ). Na rezoluciji 1024x768, slika velicine 1024x768, procesor Intel P4~2GHz, 512 Mb RAM, GeForce 6200 (full hardware accel.) se ne vidi nikakvo treperenje. Mozda koristis neku VEEELIKU sliku ili testiras program na nekom sporijem racunaru. Ako je to upitanju ili smanji sliku ili kupi bolji racunar.


Slika je veca od ekrana, tj. 1020 x 770 x 16 [BMP]... A sto se kompa tice Intel P4/2.4/768Mb/GF4/AGP 8x... ne verujem da je do kompa... Mozda je do graficke, ali u svakom slucaju moram da nateram prog. da radi i na slabijim racunarima od ovog. malo treperenja ne smeta, ali u svakom slucaju - ako stavim panel sa image-om na Formu moram prvo da resim kako da se uopste vide MDI child prozori! :( ovo sa panelom skoro i da radi OK, ali ne znam kako da ga nateram da mi se MDI child prozori pojavljuju ispred panela a ne iza njega :(

Ima li neko ideju ??? Odbijam da poverujem da ovo ne moze da se resi na neki relativno jednostavan nacin - jer svaki treci program ima neki wallpaper na sebi :((

eh da imam i jos jedno pitanje: ako bih stavio manju sliku od velicine klijent prostora forme, kako da timage nateram da je prikaze preko celog prostora, ali ne da je "rastegne" vec da je nacrta nekoliko puta (Tile) ?

poz
[ Srki_82 @ 11.05.2005. 17:50 ] @
Upsss... pardon. Uvek zaboravljam da ne koristim TImage nego TImage32 komponentu. Ona je mnogo bolja od TImage (ne treperi, prikazuje alpha kanal iz slike...). Mozes da je skines sa http://g32.org
[ Vdjuric @ 12.05.2005. 02:47 ] @
Citat:
Srki_82: Upsss... pardon. Uvek zaboravljam da ne koristim TImage nego TImage32 komponentu. Ona je mnogo bolja od TImage (ne treperi, prikazuje alpha kanal iz slike...). Mozes da je skines sa http://g32.org


Ehey stvarno je cool ova komponenta :) Ne treperi, radi kako treba, jedino ne znam kako da nateram MDI child prozore da se vide ispred Timage32 komponente.
Imas li mozda ideju kako da ovo resim ?
poz
[ Rapaic Rajko @ 19.05.2005. 07:49 ] @
Batali image preko slike i pogledaj u Delphi help-u primer za TCustomForm.OnPaint event. Mnogo buke ni oko cega...

Rajko
[ bondja @ 19.05.2005. 10:22 ] @
Ok, evo koda (ko mene je radilo :)

Code:

type
  TMainForm = class(TForm)
 ....
private
    FClientInstance : TFarProc;
    FPrevClientProc : TFarProc;
    procedure ClientWndProc(var Message: TMessage);
end;

implementation

Procedure TMainForm.ClientWndProc(Var Message : TMessage);
var
dc : hdc;
row, col : integer;
begin
with message do
     case msg of
     wm_erasebkgnd:
     begin
     dc := twmerasebkgnd(message).dc;
     for row := 0 to clientheight div wallpaper.picture.height do
       for col := 0 to clientwidth div wallpaper.picture.width do
          bitblt(dc, col * wallpaper.picture.width, row * wallpaper.picture.height,
          wallpaper.picture.width, wallpaper.picture.height,
          wallpaper.picture.bitmap.canvas.handle, 0, 0, srccopy);
       result := 1;
       end;
     else
     Result := Callwindowproc(FPrevclientproc, clienthandle,msg, wparam, lparam);
     end;
end;


procedure TMainForm.FormCreate(Sender: TObject);
begin
  Fclientinstance := makeobjectinstance(clientwndproc);
  FPrevClientProc := Pointer(Getwindowlong(Clienthandle, gwl_wndproc));
  SetWindowLong(Clienthandle, gwl_wndproc, longint(Fclientinstance));
end;



gde je wallpaper TImage( stretch := false, align := alnone)

Pozdrav!
[ Vdjuric @ 24.05.2005. 01:29 ] @


Ehey... tek sam sinoc video poruku... :)
Probao sam i ovo, medjutim i dalje treperi... :( Da li si to probao na MDI formi ili na obicnoj? Na obicnoj radi kako treba, ali zeza kada je MDI forma u pitanju... :(

Poz & hvala svima na odgovorima :)
[ bondja @ 24.05.2005. 13:14 ] @
@Vdjuric
Probao sam na MDI formi ( FormStyle := fsMDIForm). Ali sam projekat napravio tako sto sam isao na File/New/Other, jezicak Projects i izabrao MDI Application (koristim Delphi 7).
Jos jedna sitnica, slika je BMP formata.... Evo kompletnog koda... : )

Pozdrav!
[ Vdjuric @ 25.05.2005. 16:17 ] @
Citat:
bondja: @Vdjuric
Probao sam na MDI formi ( FormStyle := fsMDIForm). Ali sam projekat napravio tako sto sam isao na File/New/Other, jezicak Projects i izabrao MDI Application (koristim Delphi 7).
Jos jedna sitnica, slika je BMP formata.... Evo kompletnog koda... : )

Pozdrav!


Stvarno cool radi... :( i sta sad da radim? kako nateram da to proradi i u mom programu? sve sam stavio kao i u tvom primeru, ali ne radi. sada cu lepo da dodajem jednu po jednu stavku u interfejs ovog tvog primera, mora da ga neka komponenta zeza. :(
pozdrav & hvala na resenju problema