Toon posts:

[Delphi/Kylix] Image vernieuwt niet goed

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met Video For Linux 2. Inmiddels heb ik het eindelijk aan de praat gekregen met kylix.

Alleen er is 1 probleem. Als ik mijn programma heel de tijd achter elkaar laat capturen, zie ik de image (=TImage) vreemd knipperen. Dit komt in ieder geval niet door het te snel uitvoeren van de procedure.


Ik laat deze code in een repeat lus uitvoeren:

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  Bitmap := TBitmap.Create;
  try
    with Bitmap do
    begin
      Width := 640;
      Height := 480;
      PixelFormat := pf32bit;
    end;

    Status := __read(fd, PointerBuffer^, 640 * 480 * 4);
    if Status < 0 then
      ShowMessage('Error bij read: ' + IntToStr(errno));

    Move(PointerBuffer^, (Bitmap.ScanLine[0])^, 640 * 480 * 4);

    img_Capture.Picture.Graphic := Bitmap;
  finally
    Bitmap.Free;
  end;



Weet iemand wat de rede kan zijn van dat knipperende effect bij die image? (Het is dus net of je iedere keer ff de image leeg ziet).

(oh ja .....en een doublebuffered property bestaat er niet onder clx)

Verwijderd

probeer hetvolgende eens :

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  Application.ProcessMessages  // Starten van de message queue

  Bitmap := TBitmap.Create;
  try
    with Bitmap do
    begin
      Width := 640;
      Height := 480;
      PixelFormat := pf32bit;
    end;

    Status := __read(fd, PointerBuffer^, 640 * 480 * 4);
    if Status < 0 then
      ShowMessage('Error bij read: ' + IntToStr(errno));

    Move(PointerBuffer^, (Bitmap.ScanLine[0])^, 640 * 480 * 4);

    img_Capture.Picture.Graphic := Bitmap;
  finally
    Bitmap.Free;
  end;
  Application.ProcessMessages  // einde van de message queue


Dit zou het knipperen kunnen voorkomen.

Verwijderd

Topicstarter
Nee helaas maakt dat niks uit.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 06 June 2003 @ 19:14:
(oh ja .....en een doublebuffered property bestaat er niet onder clx)
Wazig, want daar is niets OS-specific aan. Weet je het heel zeker? :?

Als ie niet bestaat kun je het heel eenvoudig zelf bouwen overigens gezien dat je het ding simpelweg handmatig kunt tekenen in de OnPaint's ipv een TImage te gebruiken (TImage = overhead).

Professionele website nodig?


Verwijderd

Topicstarter
Bedankt, het is gelukt met een paintbox.

En ik heb nog eens goed gekeken, maar doublebuffered is echt niet beschikbaar onder CLX. Het is trouwens ook een property van een WINcontrol.