/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste