|
| Blinkende grå firkant Fra : Mikelski |
Dato : 24-10-01 14:30 |
|
Hejsa
Jeg har denne kode:
procedure TForm1.Button1Click(Sender: TObject);
var
varint : integer;
begin
for varint := 184 to Image2.Left do
begin
Image1.Left := varint;
Sleep(10);
Application.ProcessMessages;
end;
end;
Det gør at Image1, som er transparent, flytter sig hen over et tredje
billede på formen, indtil det når Image2. Men mens det flytter sig blinker
der en grå (formens baggrundsfarve) firkant, rundt om Image1.
Er der nogle, som vil hjælpe mig med hvordan jeg får den grå firkant
fjernet?
PS: Jeg har prøvet DoubleBuffered := True; i Form.Create, det virker, men
det bevirker også at Image1 bevæger sig meget langsommere hen over
skærmen... Og det går ikke
Med venlig hilsen
Mikkel
| |
Thomas Rose (24-10-2001)
| Kommentar Fra : Thomas Rose |
Dato : 24-10-01 14:45 |
|
Hej Mikelski,
"Mikelski" <mikkels_post@hotmail.com> wrote in message
news:9r6g32$17k5$1@news.cybercity.dk...
> procedure TForm1.Button1Click(Sender: TObject);
> var
> varint : integer;
> begin
> for varint := 184 to Image2.Left do
> begin
> Image1.Left := varint;
> Sleep(10);
> Application.ProcessMessages;
> end;
> end;
>
Problemet er, at du flytter en kontrol, hvilket bevirker at formen gentegner
de områder der ændrer sig... den letteste måde at undgå dette på, i dit
tilfælde, er nok at droppe de to TImage-komponenter, og istedet anvende én
TImage (eller TPaintBox) komponent, og tegne dine billeder "manuelt"... for
at undgå flimmer kan du først tegne til en bitmap (i hukommelsen så at
sige), som herefter tegnes i din komponent... håber du kan forstå min lidt
snørklede forklaring.
Cheers,
Thomas
| |
Mikelski (24-10-2001)
| Kommentar Fra : Mikelski |
Dato : 24-10-01 14:49 |
|
Det undrer mig bare at der ikke er en måde at gøre det på.
Det der med at tegne manuelt, det lyder temmelig svært.
/Mikkel
"Thomas Rose" <thr@intellix.com> skrev i en meddelelse
news:3bd6c5be$0$9450$4d4eb98e@news.dk.uu.net...
> Hej Mikelski,
>
> "Mikelski" <mikkels_post@hotmail.com> wrote in message
> news:9r6g32$17k5$1@news.cybercity.dk...
> > procedure TForm1.Button1Click(Sender: TObject);
> > var
> > varint : integer;
> > begin
> > for varint := 184 to Image2.Left do
> > begin
> > Image1.Left := varint;
> > Sleep(10);
> > Application.ProcessMessages;
> > end;
> > end;
> >
>
> Problemet er, at du flytter en kontrol, hvilket bevirker at formen
gentegner
> de områder der ændrer sig... den letteste måde at undgå dette på, i dit
> tilfælde, er nok at droppe de to TImage-komponenter, og istedet anvende én
> TImage (eller TPaintBox) komponent, og tegne dine billeder "manuelt"...
for
> at undgå flimmer kan du først tegne til en bitmap (i hukommelsen så at
> sige), som herefter tegnes i din komponent... håber du kan forstå min lidt
> snørklede forklaring.
>
> Cheers,
> Thomas
>
>
| |
Thomas Rose (24-10-2001)
| Kommentar Fra : Thomas Rose |
Dato : 24-10-01 15:42 |
|
Hej igen,
"Mikelski" <mikkels_post@hotmail.com> wrote in message
news:9r6h6a$190n$1@news.cybercity.dk...
> Det undrer mig bare at der ikke er en måde at gøre det på.
>
> Det der med at tegne manuelt, det lyder temmelig svært.
Tjo, det vil i al fald kræve lidt mere arbejde end blot at flytte
kontrollerne... men til gengæld får du også mere kontrol over tingene, og
kan - som sagt - undgå "flickering".
Og hvis du vælger denne lidt sværere måde kan du jo altid skrive spørgsmål
til gruppen... så skal vi nok hjælpe så godt vi kan.
Cheers,
Thomas
| |
|
|