Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bitmap to ASCII - blinkende Zeichen (Problemchen) (https://www.delphipraxis.net/57840-bitmap-ascii-blinkende-zeichen-problemchen.html)

turboPASCAL 27. Nov 2005 14:05


Bitmap to ASCII - blinkende Zeichen (Problemchen)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

Ausgehend von diesem Thread Dos Animations von storm1988 dachte ich mir, muss ich auch mal wieder machen.

Soweit so gut, konverieren geht, aber leider sind im Vollbildmodus der Konsole blinkende Zeichen zu sehen. Diese wollte ich wiefolgt umgehen:

Delphi-Quellcode:
yy := 0;
  for y := 0 to 24 do
  begin
    for x := 0 to 79 do
    begin
      col1 := image.Picture.Bitmap.Canvas.Pixels[x,yy];
      col2 := image.Picture.Bitmap.Canvas.Pixels[x,yy+1];

      cl1 := GetColorIndex(GetRValue(Col1), GetGValue(Col1), GetBValue(Col1));
      cl2 := GetColorIndex(GetRValue(Col2), GetGValue(Col2), GetBValue(Col2));

      if cl1 = cl2 then
      begin
        TextAr[x,y].Ch := #219;   // Vollblock
        TextAr[x,y].Color := cl1; // nur Vordergrundfarbe setzen
      end;

      if (cl1 > cl2) and (cl1<=15) and (cl2<=7)then
      begin
        TextAr[x,y].Ch := #223; // Halbblock oben
        TextAr[x,y].Color := TextColor(cl1) + TextBackground(cl2);
      end;
      if (cl1 > cl2) and (cl1<=15) and (cl2>7)then
      begin
        TextAr[x,y].Ch := #220;  // Halbblock unten
        TextAr[x,y].Color := TextColor(cl2) + TextBackground(cl1);
      end;

      if (cl1 < cl2) and (cl1<=15) and (cl2<=7)then
      begin
        TextAr[x,y].Ch := #223; // Halbblock oben
        TextAr[x,y].Color := TextColor(cl1) + TextBackground(cl2);
      end;
      if (cl1 < cl2) and (cl1<=15) and (cl2>7)then
      begin
        TextAr[x,y].Ch := #220; // Halbblock unten
        TextAr[x,y].Color := TextColor(cl2) + TextBackground(cl1);
      end;


    end;
    inc(yy, 2);
  end;
GetColorIndex() gibt den Wert der Farbe eines Pixels als Zeichenfarbe zurück

Das funktioniert nur Teilweise, kann mir jemand bei diesem Problem helfen ?

marabu 28. Nov 2005 08:21

Re: Bitmap to ASCII - blinkende Zeichen (Problemchen)
 
Moin Matti,

ich habe dein Projekt herunter geladen und auf meiner Maschine gestartet. Dann habe ich das Konsolfenster mit Alt+Enter in den Vollbildmodus umgeschaltet - kein Blinken. Wenn es bei dir blinkt, dann musst du eventuell deine Routine für die Hintergrundfarbe anpassen, da für den Hintergrund dann nur 8 Farben verfügbar sind. Das high bit steuert das Blinken.

Delphi-Quellcode:
function TextBackground(Color: Byte): Byte;
begin
  Result := (Color and 8) shl 4;
end;
Grüße vom marabu

turboPASCAL 28. Nov 2005 10:51

Re: Bitmap to ASCII - blinkende Zeichen (Problemchen)
 
Hi,

Zitat:

Dann habe ich das Konsolfenster mit Alt+Enter in den Vollbildmodus umgeschaltet - kein Blinken.
Das liegt an Windows, wenn du die "FARBTAB.EXE" ausführst, wird diese erst im Fenstermodus gestartet und nichts blinkt. Nach dem man mit ALT-Enter in den Fullscreen umschaltest sieht man das blinken.

Das Prewiew-Fenster (Konsole) ist nur in "Windows-Fenster-Modus". Mitgelifert ist eine "VIEWSCR.EXE" (16-Bit MS-DOS Application) wenn dieser per D&D eine .SCR-Datei übergeben wird und dann mit Alt-Enter in den Fullscreenmodus schaltet, sieht man auch das blinken.

In der neuen Version ist ein Preview-Button dabei der dieses automatich erledigen sollte.

Deinen Vorschlag muss ich mir erst noch mal genauer ansehen.... ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz