Starthilfe bei Grafik-Programm erbeten

Für Fragen von Einsteigern und Programmieranfängern...
nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Hallo,
ich bin Nachrichtentechnik Entwicklungs-Ing. und habe bis vor 20 Jahren viel mit BP programmiert.
Nun habe ich mit Lazarus die Chance auf einem modernen Rechner mit W7 als Rentner in meine alte Welt einzutauchen.
Reine Kalkulations- Programme beherrsche ich schon, aber mit Objektorientierung und Grafik habe ich Schwierigkeiten.

Kann mir bitte jemand ein komplettes Programm zeigen, mit dem man in einen Rahmen von 300 * 400 farbige Pixels schreiben kann.
Damit möchte ich eine Messung in 2,5 D Grafik darstellen. In den Lazarus Examples finde ich ausgerechnet das nicht.
Ich denke mit dieser Starthilfe komme ich weiter.
Im voraus besten Dank.

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von theo »

Naja, am einfachsten geht es, indem du in deinem Formular das OnPaint Ereignis einhängst, und dann sowas reinschreibst:

Code: Alles auswählen

 
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Pixels[20,20]:=clRed;
  Canvas.Pixels[21,20]:=clGreen;
  Canvas.Pixels[22,20]:=clBlue;
end;  
Damit kannst du die ganze Grösse des Formulars bepixeln. Geht auch für z.B. eine PaintBox.
Es gibt auch schnellere Methoden, aber für den Anfang...
S.a. http://wiki.freepascal.org/Developing_with_Graphics/de

Mathias
Beiträge: 6906
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Mathias »

e bis vor 20 Jahren viel mit BP programmiert.
Lazarus kennt auch die Unit Graph aus dem BP-Zeitalter, evetuell hilft dir dies weiter, wen du alte BP-Programme hast.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Danke theo für die prompte Antwort, aber sie hilft mir noch nicht weiter.
Weil ich noch nicht so drin bin, habe ich um ein komplettes lauffähiges Programm gebeten.
Dann wäre klar, was "in deinem Formular das OnPaint Ereignis einhängst" bedeutet.
Bitte zeigt mir welche Projekt-Art und welches Formular wie wo reingeschrieben gehört.
Sorry, da ich es noch nicht durchblicke, brauche ein kleines komplettes lauffähiges Programm, um daran weiter zu entwickeln.

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von theo »

Wenn du gar keinen Schimmer hast, solltest du zuerst ein paar Tutorials durcharbeiten.
z.B. hier
http://www.delphi-treff.de/tutorials/grundlagen/ (für Delphi, aber auch für Lazarus gut geeignet.)
http://wiki.freepascal.org/Lazarus_Documentation/de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

Anbei mal ein kleines Programm '(als Zip), welches mittels eines Timers zufällig Pixel in ein Rechteck zeichnet - sehr einfach, wie gewünscht - viel Erfolg!

Code:

Code: Alles auswählen

  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
...
procedure TForm1.FormPaint(Sender: TObject);
var
  i: Integer;
begin
  Canvas.Rectangle(100,100,500,400);
  for i:=0 to 1000 do
    Canvas.Pixels[Random(400)+100, Random(300)+100] := Random($1000000);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Repaint;
end;
Dateianhänge
Pixels.zip
(125.63 KiB) 82-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Vielen Dank an alle, besonders Michl hat mir sehr geholfen.

So kann ich wie ein Koch etwas ausprobieren und verändern,
ohne gleich die ganze Lebensmittel-Chemie verstehen zu müssen.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

Das freut mich. Falls Du Fragen hast, warum, was, wieso und Dir das Web keine verständlichen Antworten liefert, kannst Du gern hier nachfragen. Objektorientierung und Events/Ereignisse klingen erstmal kompliziert, wenn man den Einstieg gefunden hat, sind sie es aber nicht!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von theo »

nelke12 hat geschrieben: So kann ich wie ein Koch etwas ausprobieren und verändern,
ohne gleich die ganze Lebensmittel-Chemie verstehen zu müssen.
Naja, da würde ich für deinen Fall eine andere Anaologie bemühen.
Beim Nachsalzen einer fertigen Suppe lernst du nicht kochen, da liest du besser mal die Bedieunungsanleitung deines Kochherds und ein paar Rezeptbücher durch. :wink:

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

Ich persönlich kann nelke12s Ansatz verstehen, koche ich auch eher intuitiv. Falls es nicht schmeckt oder wenn ich mal was neues ausprobieren will, dann lese ich mir ein Rezept durch oder frage jemanden. Ich möchte kein 5-Sterne-Koch werden, sondern das kochen soll mir vor allem Freude machen :wink:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von theo »

Trotzdem musst du wissen wie man den Kochherd einschaltet. Und genau das weiss nelke12 noch nicht.
nelke12 hat geschrieben:Dann wäre klar, was "in deinem Formular das OnPaint Ereignis einhängst" bedeutet
Ich denke da hilft es nicht wirklich, wenn du ihm eine fertige Suppe oder ein fertiges Programm vor die Nase setzt.

@nelke12: Hat nichts persönlich mit dir zu tun, es ist nur eine Diskussion um die richtige Art von Hilfe.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

theo hat geschrieben:Ich denke da hilft es nicht wirklich, wenn du ihm eine fertige Suppe oder ein fertiges Programm vor die Nase setzt.
:mrgreen: Ein Déjà-vu.

Sorry, kanns mir nicht verkneifen: Dann wären ja alle mitgelieferten Examples sinnfrei - die schaut man sich ja nur an, wenn man nicht weiss, wie es geht. Weiss man wie es geht, braucht man sich diese ja nicht ansehen.

PS: Ich halte mich ja schon zurück... :wink:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von theo »

Michl hat geschrieben: Sorry, kanns mir nicht verkneifen: Dann wären ja alle mitgelieferten Examples sinnfrei
Sind sie auch, so lange du nicht weisst was ein Eventhandler ist und dass man den durch Doppelclicken auf einen Eintrag unter "Ereignisse" im Objektinspektor "einhängt".
Wenn du ihm etwas selber erklären willst, dann doch diese Sache. Ich verweise da lieber auf Tutorials, denn dafür sind sie da, und man kann (und will) nicht jedem Neuling eine private Einführung geben.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von Michl »

Hatte auch kurz überlegt (und nachher nochmal angeboten), ob ich den Code etwas kommentiere (bzw. wie man zu diesem kleinen Programm mittels ein paar Klicks und etwas Codeeingabe kommt), doch wenn keine Fragen zurück kommen, scheint es doch zu genügen?!

nelke12 hatte jedoch explizit um ein Bsp. gebeten, ansonsten sehe ich "Ich verweise da lieber auf Tutorials, denn dafür sind sie da, und man kann (und will) nicht jedem Neuling eine private Einführung geben" genauso. Wobei gute Tutorials immer noch nicht leicht zu finden sind. Wenn ich so darüber nachdenke, werde ich mal einen neuen Thread aufmachen...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

nelke12
Beiträge: 15
Registriert: Mo 7. Apr 2014, 10:21

Re: Starthilfe bei Grafik-Programm erbeten

Beitrag von nelke12 »

Hallo, ich melde mich mit einem Teilergebnis noch mal.
Ich erfasse die Leistung meiner Photovoltaik über Jahr und Tag im 5 Minuten Takt und möchte sie durch farbcodierte Pixel abbilden.

Aus dem Beispiel von Michl habe ich eine Grafik abgeleitet mit Farben, wie ich sie mir wünsche.
Allerdings habe ich die Werte nur simuliert, weil mir in Lazarus mit OO das Einlesen von Files und Werten nicht gelingt.

Andererseits habe ich ein Programm unter Einbeziehung der alten BP crt- und graph- unit erstellt mit dem ich in alter Manier
Files einlesen und die gewünschte Grafik erzeugen kann.
Leider nicht mit der von mir gewünschten Farblogik weil es da nur 16 vordefinierte Farben gibt.
Hier wollte ich 2 Ergebnis- Bilder hochladen, aber es wird gemeldet, dass die Größe des Bildes nicht ermittelt werden kann.

Da ich Lazarus noch nicht kapiere und allein nicht weiter komme, möchte ich fragen ob mir jemand
in meinem Lazarus OO Programm die Auswahl von Files und das Einlesen implementiert ?

Antworten