![]() |
Fernsehrauschen zeichnen?
Hi,
kann mir jemand sagen, wie man den "TV - Schnee" selber machen kann? Damit meine ich das Bild, was ein Fernseher anzeigt, wenn man keinen Empfang hat. Also einfach ne Menge von weißen/schwarzen Punkten, die ständig die Position ändern ![]() |
Re: Fernsehrauschen zeichnen?
Also wenn mein TV keinen Empfang hat, dann zeigt er ein blaues Bild an. :???:
|
Re: Fernsehrauschen zeichnen?
Zitat:
Also Ich würde einfach die Zeichenfläche Pixel für Pixel durchlaufen und einen zufälligen Grauwert dort zeichnen.
Delphi-Quellcode:
...
Randomize; // *einmalig* im Programm aufrufen, z.B. im FormCreate ... // Hilfsfunktion function RGBToColor(R, G, B : byte): TColor; begin Result := ((R and $FF) shl 16) + ((G and $FF) shl 8) + (B and $FF); end; ... // Zufälligen Grauwert erzeugen var Farbe: TColor; r,g,b: integer; begin r := Random(256); g := r; b := r; Farbe := RGBToColor(r,g,b); |
Re: Fernsehrauschen zeichnen?
Setze den Bildschirmbereich fest z.b. 200 X 200
[delphi]Procedure Randomize; begin end; dann packst du in deiner procedure BkColor erstmal auf Black und dann for i:=1 to beliebig do //(je mehr desto mehr Schnee) Image1.Canvas.Pixels[(Random(200),Random(200)]:=clWhite end; Viel Spass :bounce1: |
Re: Fernsehrauschen zeichnen?
@Pinki
- randomize solltest Du die Prozedur nicht nennen, die Funktion gibt es schon. Grüße Klaus |
Re: Fernsehrauschen zeichnen?
danke schonmal, das "Bild" bekomme ich nun hin, aber es sollte sich auch ständig bewegen...wie beim tv halt
hab versucht, einfach aus dem FOR nen while true do zu machen, aber da wird die form garnicht erst angezeigt. |
Re: Fernsehrauschen zeichnen?
Zitat:
@Pinki: Ich feinde deine Version nicht ganz so toll, da dabei viele Freiräume entstehen können. Außerdem machst du nur Schwarz-Weiss-Gekriesel, welches zusätzlich noch irgendwann alles Weiss gefärbt hat. @Stefan: Pack den Quellcode - meinen oder Pinkis - in einen Timer. (Sollte es nicht neu gezeichnet werden, einfach noch ein Application.ProcessMessages; anhängen) |
Re: Fernsehrauschen zeichnen?
um das alles etwas echter aussehen zu lassen,
kannst Du Dir mal überlegen, das Malen von dem Schnee in mehrer Threads auszulagern. Wenn ein weißer Punkt gemalt wurde, muss er nach eniger Zeit auch wieder entfernt werden. Ansonsten hast Du nach einer gewissen Zeit Dein Bild weiß. zum while true do in der Schleife solltest Du noch application.processMessages einbringen und vielleicht noch ein delay() von einigen millisekunden. delay findest Du in der Codelib. Grüße Klaus |
Re: Fernsehrauschen zeichnen?
@ Handy dein RGBtoColor gibts Schon
Delphi-Quellcode:
Color := RGB(R,G,B);
Delphi-Quellcode:
Aufruf dannrandomize; //Wie oben schon gesagt einmal aufrufen ... procedure Schnee(Img : TImage); var i,j:integer; begin For i := 1 to Img.Width do For j := 1 to Img.height do begin Img.Canvas.Pixels[i,j] := RGB(random(256),random(256),random(256)); application.ProcessMessages end; end;
Delphi-Quellcode:
Schnee(Image1);
|
Re: Fernsehrauschen zeichnen?
Zitat:
Threads sind glaub ich auch direkt mal Spatzen mit Kanonen abschießen ;) Höstens einer würde hier passen, damit das Hauptprogramm nicht vom Zeichenvorgang ausgebremst wird. @pacman1986: Ich glaub ich hatte RGB() schonmal benutzt, war mir aber nicht mehr sicher. Deshalb hab ich fix mal einen Ersatz dafür gesucht ^^ Aso: Du erzeugst übrigends bunten Schnee ;) Du musst für RGB dreimal den selben Wert benutzen, damit ein Grauwert entsteht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz