AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi kurzvortrag / einfürhrung in Grafikprogrammierung - ca 15min
Thema durchsuchen
Ansicht
Themen-Optionen

kurzvortrag / einfürhrung in Grafikprogrammierung - ca 15min

Ein Thema von Baeumchen · begonnen am 27. Nov 2005 · letzter Beitrag vom 29. Nov 2005
Antwort Antwort
Seite 2 von 2     12   
Baeumchen

Registriert seit: 7. Jul 2005
Ort: Dresden
61 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 27. Nov 2005, 16:33
ok werde mich jetzt damit noch ein bissel beschäftigen und dann mal gucken was am dienstag drauß wird!

danke noch mal..wenn ich noch frage habe dann poste ich einfach
Norbert Baum
mfg
  Mit Zitat antworten Zitat
Benutzerbild von -NIP-
-NIP-

Registriert seit: 6. Jun 2004
Ort: Aachen
254 Beiträge
 
Delphi 7 Personal
 
#12

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 27. Nov 2005, 18:19
Mit der Funktion/Prozedur "Pixels"(oder Eigenschaft ) vom TCanvas kannst du dir entweder die Farbe eines Pixels im Canvas als TColor zurückgeben lassen, oder du veränderst die Farbe des Pixels mit derselben Prozedur.

Aufbau bei Pixelfarbe auslesen:
Farbe:=Canvas.Pixels[5,5];

Farbe:Variable vom Typ TColor in der die Farbe des angegebenen Pixels gespeichert wird
[5,5]: der erste grüne Wert gibt die Position des Pixels auf der X-Achse an, der zweite die Position auf der Y-Achse. Dabei ist ganz oben links die Koordinate [0,0], also:

Code:
--Y
X 0 1 2 3 4 5 ...
  1 o o o o o ...
  2 o o o o o ...
  3 o o o o o ...
  4 o o o o o ...
  5 o o o o o ...
  .
  .
  .
("o" stellt einfach einen Pixel dar)

Aufbau bei Pixelfarbe setzen:
Canvas.Pixels[5,5]:=Farbe;

Farbe: Nun wird Farbe als Variable benutzt, die die Farbe repräsentiert die letztendlich auf den Pixel gezeichnet wird.
[5,5]: Ist wieder die Koordinatenangabe des Pixels, [b]aber[/] nun wird auf ihn mit der angegebenen Farbe gemalt und nicht sein Farbwert ausgelesen.

Beispiel:
Delphi-Quellcode:
var
  Farbe: TColor;
begin
  Farbe:= Canvas.Pixels[2,2]; {Liest die Farbe des Pixels auf den Koordinaten X:2 Y:2 aus und schreibt sie in die Variable "Farbe".}
  Canvas.Pixels[3,3]:= Farbe; {Färbt den Pixel auf den Koordinaten X:3 Y:3 in der Farbe der Variable "Farbe"}
end;
Um deine Zuhörer noch ein bisschen zu "beeindrucken" kannst du die Prozedur MSDN-Library durchsuchenBitBlt(stellt Windows bereit), vorstellen, die Teilbereiche/den ganzen Bereich aus einem Canvas/Bitmap in ein anderes Canvas/Bitmap kopiert.
Eine ähnliche Methode hat TCanvas schon. Das schon besagt Canvas.Draw zeichnet einfach ein Bitmap an die angegebenen X und Y Koordinaten vom Zielbild. BitBlt ist allerdings wesentlich flexibler und imho auch schneller.

Canvas.Draw(5,5,Grafik);
Die ersten beiden Werte sind die X und Y Koordinaten, wohin das Bild gezeichnet werden soll.
Die Zweite Variable "Grafik" vom Typ TGraphic ist das Bild, welches an die X und Y Koordinaten gezeichnet wird.

BitBlt
Zitat von MSDN Library:
Code:
BOOL BitBlt(
  HDC hdcDest, // handle to destination DC
  int nXDest, // x-coord of destination upper-left corner
  int nYDest, // y-coord of destination upper-left corner
  int nWidth, // width of destination rectangle
  int nHeight, // height of destination rectangle
  HDC hdcSrc, // handle to source DC
  int nXSrc,  // x-coordinate of source upper-left corner
  int nYSrc,  // y-coordinate of source upper-left corner
  DWORD dwRop // raster operation code
);
Diese Funktion ist zwar schneller, aber auch ungemütlicher (aber dafür auch flexibler wie gesagt).
Ich weiß nicht, ob du dich mit Handles auskennst. Handles sind so etwas wie Adressen von "Objekten".
Und da TCanvas auch ein Handle hat , kann man diese Methode auch damit benutzen.

Erklärung
Code:
BOOL BitBlt(
  HDC hdcDest, // Handle des Zielcanvas (also das Canvas, wo er draufzeichnen soll)

  int nXDest, // X-Koordinate, wohin er zeichnen soll (wieder von oben links aus gesehen)

  int nYDest, // Y-Koordinate, wo er zeichnen soll

  int nWidth, // Breite des zu zeichnenden Bildausschnittes

  int nHeight, // Höhe des zu zeichnenden Bildausschnittes

  HDC hdcSrc, // Handle des Quellcanvas (also das Canvas, dessen Ausschnitt er auf das Zielcanvas zeichnen soll)

  int nXSrc,  // X-Koordinate vom zu zeichnenden Ausschnitt auf dem Quellcanvas

  int nYSrc,  // Y-Koordinate vom zu zeichnenden Ausschnitt auf dem Quellcanvas

  DWORD dwRop // imho die Art wie er die Farben beim Draufzeichnen mischt

);
Beispiel:
sagen wir mal wir hätten zwei Images.
Auf Image1 soll ein Ausschnitt von Image2 gezeichnet werden
Delphi-Quellcode:
begin
  BitBlt(Image1.Canvas.Handle,2,2,100,100,Image2.Canvas.Handle,0,0,SrcCopy);
end;
Also:
  • Er zeichnet auf Image1.Canvas
  • Er zeichnet von Image2.Canvas
  • Der Ort auf Image1, wo der Ausschnitt hinkommt ist X:2 Y:2
  • Die Breite und die Höhe des Ausschnittes beträgt 100
  • Der Ausschnitt ist auf Image2 von den Koordinaten X:0 Y:0 abgegriffen

So, das wars erstmal

Korrigiert mich, wenn ich was falsch gemacht habe.

[Edit] Warscheinlich kann man alleine mit der Methode BitBlt 15min. füllen [/Edit]
Christian
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#13

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 27. Nov 2005, 18:25
Zitat von -NIP-:
Mit der Funktion/Prozedur "Pixels" vom TCanvas
Wow! So eine gute Erläuterung der Eigenschaft "Pixels" habe ich echt noch selten gesehen!
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#14

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 27. Nov 2005, 18:28
Zitat:
Canvas.Rectangle(Rect); // Rechteck
was bedeutet Rect?

Canvas.Draw(X, Y, Graphic); // Grafik einfach zeichen
oder hier Grafic?
X, Y is ja der punkt
Rect bedeutet das du hier etwas vom type Trect angeben musst ein TRect gibt ein recteck an. es gibt eine function (die heißt auch rect) mit der man ein TRect erzeugen kann
Bsp.: Rect(0,0,100,100);
man kann das ganze auch als Variable machen:
Delphi-Quellcode:

var myrect:trect;
begin
  myrect.Left:=0;
  myrect.Top:=0;
  myrect.Right:=100;
  myrect.Bottom:=100;
  Canvas.Rectangle(myrect);
end;
Graphic ist der basistype für grafiken (TGraphic) da kanst du z.B. ein TBitmap einsetzen
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Baeumchen

Registriert seit: 7. Jul 2005
Ort: Dresden
61 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 27. Nov 2005, 20:27
Danke für die weiteren Hilfen/Texte/Erklärungen!
muss mich da jetzt noch ein bissel rein abreiten und dann denke ich mal das ich für meine klasse was brauchbares schaffen kann

also dann danke noch mal
schönen abend noch und vorallem schöne arbeitswoche / schulwoche
Norbert Baum
mfg
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#16

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 28. Nov 2005, 10:24
Zitat von Baeumchen:
meine klasse
haben kaum plan von delphi
also n paar schleifen und ausgabe aber richtige komplexe sachen kann keiner richtig!
Erinnert mich an meine alte BKIK Klasse
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Baeumchen

Registriert seit: 7. Jul 2005
Ort: Dresden
61 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1

  Alt 29. Nov 2005, 07:14
guten morgen DP'ler

ich habe es jetzt hinter mir
es könnte so sein, also hätten sie es verstanden und können es auch anwenden trotz weiter hilfe

naja mal schauen....mal gucken was ich jetzt dazu bekomme


danke noch mal an alle...ohne euch wäre ich verloren gewesen!!
Norbert Baum
mfg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:45 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