![]() |
kurzvortrag / einfürhrung in Grafikprogrammierung - ca 15min
Hallo Delphi-Freaks
ich muss leider am dienstag einen kurzvortrag halten also ich muss eine einführung in die Grafikprogrammierung machen also so mit ein bissel canvas, Image/pintBox und so habe leider kein plan davon habe auch nix brauchbares gefunden wenn mir einer helfen kann, wäre ich richtig glücklich zum 1. Advent die Bsp dazu würde ich versuchen zuerstellen mfg Norbert Baum und noch einen schönen Advent |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Vor welcher Art von Publikum? :wink:
|
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
meine klasse
haben kaum plan von delphi also n paar schleifen und ausgabe aber richtige komplexe sachen kann keiner richtig! |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Einfürhrung in Grafikprogrammierung
Delphi-Quellcode:
ist der Zeichenstift den kann man mit
canvas.pen
Delphi-Quellcode:
auf der Zeichenfläche bewegen und mit
Canvas.moveto(x,y)
Delphi-Quellcode:
eine Linie zeichnen.
Canvas.lineto(x,y)
Es gibt noch weitere Funktionen wie
Delphi-Quellcode:
Für die Textausgabe gibt es
Canvas.Rectangle(Rect); // Rechteck
Canvas.Ellipse(Rect); // Ellipse
Delphi-Quellcode:
Und für die Grafikausgabe:
Canvas.TextOut(X, Y, Text);
Delphi-Quellcode:
Das ist eigentlich das wesentliche des Canvas Object.
Canvas.Draw(X, Y, Graphic); // Grafik einfach zeichen
Canvas.StretchDraw( Rect, Graphic); // Grafik aussammengestaucht zeichen |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Du kannst ja zeigen, wie man auf einem Canvas zeichnet:
Linien: ![]() ![]() Rechtecke: ![]() Ellipsen / Kreise: ![]() RoundRect gibt's glaub auch (abgerundete Ecken). Bei der Ellipse und den Rechtecken kannst du die Farbe ja ändern: Umrandung: ![]() Füllfarbe: ![]() Text ausgeben: ![]() Natürlich kannst du das auch auf das Canvas eines Bitmaps ( ![]() PS: Ich poste das trotz dem roten Kasten, da es nicht ganz identisch ist. |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Ich stimme meinen Vorpostern voll und ganz zu, und würde folgendes hinterhersetzen, wenn mein Auditorium bis dahin noch nicht wie ein Auto guckt:
Du kannst erzählen, dass eigentlich alle sichtbaren Dinge (Forms, Buttons etc. pp.) ein Canvas haben, und das man das auch verändern kann. |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
ok danke!!
Canvas.Rectangle(Rect); // Rechteck was bedeutet Rect? Canvas.Draw(X, Y, Graphic); // Grafik einfach zeichen oder hier Grafic? X, Y is ja der punkt und habt ihr noch n paar leichte, nette ideen für bsp-programme? |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Das "Rect" ist ein Rechteck vom Typ TRectangle (glaub ich). Die OH weiß diesbezüglich mehr als ich. "Graphic" ist AFAIK vom Typ TGraphic.
Beispielprogramme:
MfG, hanselmansel |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Rechtecke kann man, soweit ich weiß, auch so zeichnen:
Delphi-Quellcode:
ohne Umweg über TRect. DOch ganz sicher bin ich mir nicht.
Canvas.Rectangle(0, 0, 200, 100);
|
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Zitat:
|
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
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 |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
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:
("o" stellt einfach einen Pixel dar)
--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 ... . . . 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:
Um deine Zuhörer noch ein bisschen zu "beeindrucken" kannst du die Prozedur
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; ![]() 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:
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:
Beispiel:
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 ); sagen wir mal wir hätten zwei Images. Auf Image1 soll ein Ausschnitt von Image2 gezeichnet werden
Delphi-Quellcode:
Also:
begin
BitBlt(Image1.Canvas.Handle,2,2,100,100,Image2.Canvas.Handle,0,0,SrcCopy); end;
So, das wars erstmal :D Korrigiert mich, wenn ich was falsch gemacht habe. [Edit] Warscheinlich kann man alleine mit der Methode BitBlt 15min. füllen :lol: [/Edit] |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Zitat:
|
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Zitat:
Bsp.: Rect(0,0,100,100); man kann das ganze auch als Variable machen:
Delphi-Quellcode:
Graphic ist der basistype für grafiken (TGraphic) da kanst du z.B. ein TBitmap einsetzenvar myrect:trect; begin myrect.Left:=0; myrect.Top:=0; myrect.Right:=100; myrect.Bottom:=100; Canvas.Rectangle(myrect); end; |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
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 |
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
Zitat:
|
Re: kurzvortrag / einfürhrung in Grafikprogrammierung - ca 1
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!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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