AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Fernsehrauschen zeichnen?
Thema durchsuchen
Ansicht
Themen-Optionen

Fernsehrauschen zeichnen?

Ein Thema von StefanG · begonnen am 23. Mai 2006 · letzter Beitrag vom 23. Mai 2006
Antwort Antwort
Seite 1 von 3  1 23      
StefanG

Registriert seit: 23. Feb 2006
74 Beiträge
 
#1

Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:14
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

Beispiel
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:28
Also wenn mein TV keinen Empfang hat, dann zeigt er ein blaues Bild an.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#3

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:35
Zitat von RavenIV:
Also wenn mein TV keinen Empfang hat, dann zeigt er ein blaues Bild an.
Sehr produktiver Beitrag

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);
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von Pinki
Pinki

Registriert seit: 19. Mai 2006
Ort: Mülheim an der Ruhr
49 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:43
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:49
@Pinki
- randomize solltest Du die Prozedur nicht nennen, die Funktion gibt es schon.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
StefanG

Registriert seit: 23. Feb 2006
74 Beiträge
 
#6

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:55
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.
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#7

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 10:56
Zitat von Klaus01:
@Pinki
- randomize solltest Du die Prozedur nicht nennen, die Funktion gibt es schon.
Was man in meinem Quellcode direkt mal bewundern kann

@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)
Manuel
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 11:00
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
Klaus
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 11:04
@ Handy dein RGBtoColor gibts Schon

Color := RGB(R,G,B);

Delphi-Quellcode:

randomize; //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;
Aufruf dann
Schnee(Image1);
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#10

Re: Fernsehrauschen zeichnen?

  Alt 23. Mai 2006, 11:08
Zitat von Klaus01:
um das alles etwas echter aussehen zu lassen,
kannst Du Dir mal überlegen, das Malen von dem
Schnee in mehrer Threads auszulagern.
[...]
in der Schleife solltest Du noch application.processMessages einbringen
und vielleicht noch ein delay() von einigen millisekunden.
Ich glaub Delay ist da überflüssig, da das Bildrauschen meist sehr schnell ist.
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.
Manuel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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