Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Sep 07, 2025 18:50

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 08, 2003 15:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Ich habe ein Bitmap. Das Bitmap hat die Farbe schwarz als Transparente Farbe. Also möchte ich nur um das eigentlich Bild eine Quadrat legen (Kollisionsbox) also alles was ungleich schwarz ist.
Das Bild sieht so aus
Bild

dann habe ich noch einige variablen
Code:
  1.  
  2.     FCollLeft,
  3.     FCollTop,
  4.     FCollRight,
  5.     FCollBottom : Integer;
  6.  

FCollLeft := l
FCollTop := t
FCollRight := r
FCollBottom := b
(l,t,r,b sind werte vom obigen Bitmap, die Buchstaben stehen neben den Bunten Linen)

Dann zeichne ich das Bitmap
Code:
  1.  
  2.   glBegin(GL_QUADS);
  3.     glTexCoord2f(0,1); glVertex2f(FCollLeft                 ,FCollTop);
  4.     glTexCoord2f(1,1); glVertex2f(FWidth-(FWidth-FCollRight),FCollTop);
  5.     glTexCoord2f(1,0); glVertex2f(FWidth-(FWidth-FCollRight),FHeight-(FHeight-FCollBottom));
  6.     glTexCoord2f(0,0); glVertex2f(FCollLeft                 ,FHeight-(FHeight-FCollBottom));
  7.   glEnd;
  8.  

Also es soll nur da eine Box gezeichnet werde wo auch das Bild ist also ohne den Schwarzen Rand.
Wenn ich es gezeichnet habe kommt das raus
Bild
Der Regentropen sieht nicht gut aus, aber das rote Bitmap sieht schon was besser aus. Was habe ich falsch gemacht. Ich hoffe, ich habe das einigermaßen gut erklärt und ihr könnt mir weiter helfen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 08, 2003 16:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
*guckt verwirrt* huhu.. :blink:

Also... du möchtest eine BoundingBox um den Tropfen legen, ja?? Aber halt nich um das Polygon von dem Tropfen, sondern nur um den weißen tropfen auf der Textur...???

Ich denke das geht nich so einfach, du müßtest irgendwie selber ausrechnen wie breit/hoch etc der weiße tropfen ist.. (in nen TBitmap laden und von oben nach unten suchen wo das erste nicht schwarze pixel ist etc) und dann anhand dieser daten die Box drumrum zeichnen :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 08, 2003 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Also soweit ich dich verstehe (leider war deine Beschreibung irgendwie etwas vage), willst du quasi herausfinden, wie groß das eigentlich Bild (der Tropfen) auf der Textur ist.Wenns nicht klappt, hättest du wenigstens noch dabeischreiben sollen, wie du das machst.

Allerdings finde ich es recht unnötig sich selbst ne Boundingbox zu basteln, wenn doch inzwischen jedes Bildbearbeitungsprogramm in der Lage ist Bilder zurecht zustutzen.Wenn du die Textur dann zurechtschneidest, hast du nämlich keinen schwarzen Rand mehr und die Dimensionen der Textur entsprechen dann auch der Boundingbox deines Objektes.

Wenn du allerdings wirklich die Grenzen berechnen willst (oder musst), dann geht das doch recht einfach mit vier Schleifen.Schleife 1 startet links und stoppt beim ersten Pixel <> schwarz -> linker Rand, Schleife 2 beginnt rechts um den rechten Rand zu finden, Schleife 3 startet oben, Schleife 4 unten, und schon hast du die Boundingbox.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 08:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Son of Satan hat geschrieben:
Also soweit ich dich verstehe (leider war deine Beschreibung irgendwie etwas vage), willst du quasi herausfinden, wie groß das eigentlich Bild (der Tropfen) auf der Textur ist.Wenns nicht klappt, hättest du wenigstens noch dabeischreiben sollen, wie du das machst.

Allerdings finde ich es recht unnötig sich selbst ne Boundingbox zu basteln, wenn doch inzwischen jedes Bildbearbeitungsprogramm in der Lage ist Bilder zurecht zustutzen.Wenn du die Textur dann zurechtschneidest, hast du nämlich keinen schwarzen Rand mehr und die Dimensionen der Textur entsprechen dann auch der Boundingbox deines Objektes.

Wenn du allerdings wirklich die Grenzen berechnen willst (oder musst), dann geht das doch recht einfach mit vier Schleifen.Schleife 1 startet links und stoppt beim ersten Pixel <> schwarz -> linker Rand, Schleife 2 beginnt rechts um den rechten Rand zu finden, Schleife 3 startet oben, Schleife 4 unten, und schon hast du die Boundingbox.

Das hätte ich noch dabei schreiben sollen, also ich habe die werte wo die ersten Pixel anfangen.
Die sind auch ok nur das einzige Problem was ich habe ist die rechnung die ich bei der zeichnung mache.
Bei dem einen Bild, Tropfen, ist die Box viel zu klein und bei dem anderen Bild ist die Box ok.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Sry, aber ich versteh dein Problem immernoch nicht so ganz.Es wäre vielleicht ganz hilfreich zu wissen, wie du die Kollisionsbox berechnest.Vielleicht ist dort dein Fehler.
Was ich auch nicht verstehe : Warum zeichnest du die Box so umständlich, wenn du doch vorher geschrieben hast, das du sowohl die Werte für Links/Rechts als auch für Oben/Unten hast.Dann musst du diese doch nur noch in die Zeichenroutine deines Quads einsetzen, statt solcher "komplexen" Rechnungen wie fHeigh-(...).

FWidth-(FWidth-FCollRight) ergibt für mich z.B. gar keinen Sinn, denn FWidth-FWidth ist doch gleich null, also könntest du anstatt dieses komischen unnützen Konstruktes auch gleich FCollRight nutzen....genauso hier : FHeight-(FHeight-FCollBottom)! Wenn du in Mathe zumindest ein ganz klein wenig aufgepasst hast, dann sollte dir klar werden das dieser "Ausdruck" gleich FCollBottom ist, denn FHeight-FHeight (die Klammern hättest du dir übrigens sparen könne) ergibt doch immer 0!

Ich gehe also mal davon aus, das du entweder nen Fehler beim Berechnen der Grenzen oder beim Zeichnen machst.Allerdings wäre dann der Quellcode deiner Routine die die Grenzen für die Boundingbox berechnet von Nützen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 10:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Son of Satan hat geschrieben:
Sry, aber ich versteh dein Problem immernoch nicht so ganz.Es wäre vielleicht ganz hilfreich zu wissen, wie du die Kollisionsbox berechnest.Vielleicht ist dort dein Fehler.
Was ich auch nicht verstehe : Warum zeichnest du die Box so umständlich, wenn du doch vorher geschrieben hast, das du sowohl die Werte für Links/Rechts als auch für Oben/Unten hast.Dann musst du diese doch nur noch in die Zeichenroutine deines Quads einsetzen, statt solcher "komplexen" Rechnungen wie fHeigh-(...).

FWidth-(FWidth-FCollRight) ergibt für mich z.B. gar keinen Sinn, denn FWidth-FWidth ist doch gleich null, also könntest du anstatt dieses komischen unnützen Konstruktes auch gleich FCollRight nutzen....genauso hier : FHeight-(FHeight-FCollBottom)! Wenn du in Mathe zumindest ein ganz klein wenig aufgepasst hast, dann sollte dir klar werden das dieser "Ausdruck" gleich FCollBottom ist, denn FHeight-FHeight (die Klammern hättest du dir übrigens sparen könne) ergibt doch immer 0!

Ich gehe also mal davon aus, das du entweder nen Fehler beim Berechnen der Grenzen oder beim Zeichnen machst.Allerdings wäre dann der Quellcode deiner Routine die die Grenzen für die Boundingbox berechnet von Nützen.

Also, das sind die Routine um die Seiten rauszufinden.
Code:
  1.  
  2. Function GetRight(Bitmap : TBitmap) : Integer;
  3. var
  4.  &nbsp;x,y : Integer;
  5. Begin
  6.  &nbsp;result:=0;
  7.  &nbsp;for x:=Bitmap.Width-1 downto 0 do
  8.  &nbsp; &nbsp;for y:=Bitmap.Height-1 downto 0 do
  9.  &nbsp; &nbsp; &nbsp;if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  10.  &nbsp; &nbsp; &nbsp; &nbsp;result:=y;
  11.  &nbsp; &nbsp; &nbsp; &nbsp;exit;
  12.  &nbsp; &nbsp; &nbsp;end;
  13. end;
  14.  
  15. Function GetBottom(Bitmap : TBitmap) : Integer;
  16. var
  17.  &nbsp;x,y : Integer;
  18. Begin
  19.  &nbsp;result:=0;
  20.  &nbsp;for y:=Bitmap.Height-1 downto 0 do
  21.  &nbsp; &nbsp;for x:=Bitmap.Width-1 downto 0 do
  22.  &nbsp; &nbsp; &nbsp;if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  23.  &nbsp; &nbsp; &nbsp; &nbsp;result:=x;
  24.  &nbsp; &nbsp; &nbsp; &nbsp;exit;
  25.  &nbsp; &nbsp; &nbsp;end;
  26. end;
  27.  
  28. Function GetTop(Bitmap : TBitmap) : Integer;
  29. var
  30.  &nbsp;x,y : Integer;
  31. Begin
  32.  &nbsp;result:=0;
  33.  &nbsp;for y:=0 to Bitmap.Height-1 do
  34.  &nbsp; &nbsp;for x:=0 to Bitmap.Width-1 do
  35.  &nbsp; &nbsp; &nbsp;if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  36.  &nbsp; &nbsp; &nbsp; &nbsp;result:=y;
  37.  &nbsp; &nbsp; &nbsp; &nbsp;exit;
  38.  &nbsp; &nbsp; &nbsp;end;
  39. end;
  40.  
  41. Function GetLeft(Bitmap : TBitmap) : Integer;
  42. var
  43.  &nbsp;x,y : Integer;
  44. begin
  45.  &nbsp;result:=0;
  46.  &nbsp;for x:=0 to Bitmap.Width-1 do
  47.  &nbsp; &nbsp;for y:=0 to Bitmap.Height-1 do
  48.  &nbsp; &nbsp; &nbsp;if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  49.  &nbsp; &nbsp; &nbsp; &nbsp;result:=x;
  50.  &nbsp; &nbsp; &nbsp; &nbsp;exit;
  51.  &nbsp; &nbsp; &nbsp;end;
  52. end;
  53.  

Ups du hast recht mit FHeigh hatte mich da vertan.
Wie schon gesagt wenn ich das schreibe
Code:
  1.  
  2.  &nbsp; &nbsp;glTexCoord2f(0,1); glVertex2f(FCollLeft &nbsp;,FCollTop);
  3.  &nbsp; &nbsp;glTexCoord2f(1,1); glVertex2f(FCollBottom,FCollTop);
  4.  &nbsp; &nbsp;glTexCoord2f(1,0); glVertex2f(FCollBottom,FCollRight);
  5.  &nbsp; &nbsp;glTexCoord2f(0,0); glVertex2f(FCollLeft &nbsp;,FCollRight);
  6.  

und ich zeichne meinen Tropfen ist die Box zu klein. Zeichne ich mein Rotes Bild
ist die Box genau so groß wie das eigentliche Bild, aber ich zeichne es ja mit der selben Routine,
was habe ich falsch gemacht? :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 10:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
  1.  
  2. Function GetBottom(Bitmap : TBitmap) : Integer;
  3. var
  4.  x,y : Integer;
  5. Begin
  6.  result:=0;
  7.  for y:=Bitmap.Height-1 downto 0 do
  8.  &nbsp; for x:=Bitmap.Width-1 downto 0 do
  9.  &nbsp; &nbsp; if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  10.  &nbsp; &nbsp; &nbsp; result:=x;
  11.  &nbsp; &nbsp; &nbsp; exit;
  12.  &nbsp; &nbsp; end;
  13. end;
  14.  


Muss dich leider enttäuschen, aber die Routine ist total unbrauchbar.Du fängst rechts an, gehst nach oben und prüfst ob ein Pixel <> Schwarz ist.Jetzt kommt deine Routine aber irgendwann an den rechten Rand deines Tropfens und findet dort einen Pixel <> Schwarz (Mit rotem Pfeil gekennzeichnet), dieser liegt aber logischerweise nicht am unteren Rand deines Bildes, sondern circa in der Mitte :
Bild

Du musst in deinen Routinen (nicht nur in der die den unteren Wert berechnet!) also noch einen Zwischenwert nutzen um herauszufinden ob der gefundene Pixel wirklich der Extremwert ist.Du prüfst in obiger Funktion einfach nur, ob der erste Pixel den du findest <> Schwarz ist, und nimmst dann an das dieser der unterste Pixel ist.Du brauchst dort allerdings noch nen Zwischenwert, z.B. TmpUnten : TPoint, den du beim Finden eines Pixels <> Schwarz vergleichst.Wenn dieser Pixel weiter unten liegt als der in TmpUnten gespeicherte, musst du TmpUnten durch diesen Ersetzen.Dann gehst du mit deiner Schleife (ohne ein Exit) das komplette Bild durch und hast am Ende deine untere Grenzen.

P.S. : AFAIK liegen die Grenzen von Canvas.Pixels nicht bei 0,0->Width-1,Height-1 sondern 1,1->Width,Height!

Code:
  1.  &nbsp;glTexCoord2f(0,1); glVertex2f(FCollLeft &nbsp;,FCollTop);
  2.  &nbsp; glTexCoord2f(1,1); glVertex2f(FCollBottom,FCollTop);
  3.  &nbsp; glTexCoord2f(1,0); glVertex2f(FCollBottom,FCollRight);
  4.  &nbsp; glTexCoord2f(0,0); glVertex2f(FCollLeft &nbsp;,FCollRight);
  5.  

Ist das ernst gemeint?

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 12:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Son of Satan hat geschrieben:
Code:
  1.  
  2. Function GetBottom(Bitmap : TBitmap) : Integer;
  3. var
  4.  x,y : Integer;
  5. Begin
  6.  result:=0;
  7.  for y:=Bitmap.Height-1 downto 0 do
  8.    for x:=Bitmap.Width-1 downto 0 do
  9.      if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  10.        result:=x;
  11.        exit;
  12.      end;
  13. end;
  14.  


Muss dich leider enttäuschen, aber die Routine ist total unbrauchbar.Du fängst rechts an, gehst nach oben und prüfst ob ein Pixel <> Schwarz ist.Jetzt kommt deine Routine aber irgendwann an den rechten Rand deines Tropfens und findet dort einen Pixel <> Schwarz (Mit rotem Pfeil gekennzeichnet), dieser liegt aber logischerweise nicht am unteren Rand deines Bildes, sondern circa in der Mitte :
Bild

Du musst in deinen Routinen (nicht nur in der die den unteren Wert berechnet!) also noch einen Zwischenwert nutzen um herauszufinden ob der gefundene Pixel wirklich der Extremwert ist.Du prüfst in obiger Funktion einfach nur, ob der erste Pixel den du findest <> Schwarz ist, und nimmst dann an das dieser der unterste Pixel ist.Du brauchst dort allerdings noch nen Zwischenwert, z.B. TmpUnten : TPoint, den du beim Finden eines Pixels <> Schwarz vergleichst.Wenn dieser Pixel weiter unten liegt als der in TmpUnten gespeicherte, musst du TmpUnten durch diesen Ersetzen.Dann gehst du mit deiner Schleife (ohne ein Exit) das komplette Bild durch und hast am Ende deine untere Grenzen.

P.S. : AFAIK liegen die Grenzen von Canvas.Pixels nicht bei 0,0->Width-1,Height-1 sondern 1,1->Width,Height!

Code:
  1.   glTexCoord2f(0,1); glVertex2f(FCollLeft  ,FCollTop);
  2.    glTexCoord2f(1,1); glVertex2f(FCollBottom,FCollTop);
  3.    glTexCoord2f(1,0); glVertex2f(FCollBottom,FCollRight);
  4.    glTexCoord2f(0,0); glVertex2f(FCollLeft  ,FCollRight);
  5.  

Ist das ernst gemeint?

Irgend wie verstehe ich den Text nicht. Du hast geschrieben das ich mit der Procedure GetBottom von rechts anfangen würde, aber ich fange doch von unten an.
Ja das ist mein ernst!
Auszug aus der Hilfe
Code:
  1.  
  2.  for y := 0 to BitMap.Height -1 do
  3.  &nbsp; &nbsp;begin
  4.  &nbsp; &nbsp; &nbsp;P := BitMap.ScanLine[y];
  5.  &nbsp; &nbsp; &nbsp;for x := 0 to BitMap.Width -1 do
  6.  
  7.  &nbsp; &nbsp; &nbsp; &nbsp;P[x] := y;
  8.  &nbsp; &nbsp;end;
  9.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 12:24 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
Zitat:
Irgend wie verstehe ich den Text nicht. Du hast geschrieben das ich mit der Procedure GetBottom von rechts anfangen würde, aber ich fange doch von unten an.

stimmt schon mit dem von unten anfangen

das ist ja wohl nicht sonderlich schwer..
wenn du den untersten punkt haben willst gehste die zeilen von unten durch...
wenn du den rechtesten haben willst, dann gehste die Spalten von rechts durch
usw.
;)

Fiji-Fighter

//EDIT: hatte den totalen Quatsch geschrieben...
//wer lesen kann ist klar im Vorteil...
//naja egal, ich sollte aus der Schule hier wirklich nichts mehr schreiben ;)

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 12:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Sorry, hatte nen leichten Black Out...hast recht, deine Routine scheint zu stimmen.Lass dir allerdings mal irgendwie (z.B. per Dialogbox) die gefundenen Grenzen der Boundingbox ausgeben, und vergleich die mit Hilfe eines Bildbearbeitungsprogramm mit den Grenzwerten die dabei rauskommen sollten, denn dann siehst du ob die gefundenen Werte auch richtig sind.
Ist dies der Fall, stimmt was beim Zeichnen der Boundingbox nicht.Und der Spruch "Ist das dein Ernst" kommt daher, weil du die Boundingbox mit dem neuen Code falsch zeichnest!
Das muss wenn schon denn schon so aussehen :
Code:
  1.  
  2.  &nbsp;glTexCoord2f(0,1); glVertex2f(FCollLeft &nbsp;, &nbsp;FCollTop);
  3.  &nbsp;glTexCoord2f(1,1); glVertex2f(FCollRight, &nbsp;FCollTop);
  4.  &nbsp;glTexCoord2f(1,0); glVertex2f(FCollRight, &nbsp;FCollBottom);
  5.  &nbsp;glTexCoord2f(0,0); glVertex2f(FCollLeft &nbsp;, &nbsp;FCollBottom);
  6.  


P.S. : Warum schneidest du die Texturen denn nicht mit einem Bildbearbeitungsprogramm zurecht, denn dann sind die Dimensionen deiner Textur = der Boundingbox.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 13:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Son of Satan hat geschrieben:
...
P.S. : Warum schneidest du die Texturen denn nicht mit einem Bildbearbeitungsprogramm zurecht, denn dann sind die Dimensionen deiner Textur = der Boundingbox.

Wenn ich die Textur abschneide kann ich sie ja nicht mehr darstellen, weil ich ja immer gleich große(Breite,Höhe) Bitmaps haben muss. Wenn ich ein Bitmap nehme was unterschiedliche Höhe und Breite hat wird das Bild nicht richtig gezeichnet. Wie geht das den mit dem Abschneiden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 13:39 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
TOpenGL hat geschrieben:
Wenn ich die Textur abschneide kann ich sie ja nicht mehr darstellen, weil ich ja immer gleich große(Breite,Höhe) Bitmaps haben muss. Wenn ich ein Bitmap nehme was unterschiedliche Höhe und Breite hat wird das Bild nicht richtig gezeichnet. Wie geht das den mit dem Abschneiden?

Im Normalfall dürfte das Darstellen von Texturen mit unterschiedlichen Dimensionen keine Probleme machen.Hab das schon oft gemacht, und hatte nie Ärger damit, das kommt allerdings auch auf die genutzte Grafikkarte an.

Wie das mit dem Abschneiden geht, hängt von dem Bildbearbeitungsprogramm ab das du nutzt.Allerdings solltest du doch einige gewisse Grundkenntnisse in Sachen Bildbearbeitung mitbrigen, wenn du ernsthaft was mit OpenGL machen willst.Wie das genau geht, steht ja in der Anleitung zu deinem Bildbearbeitungsprogramm.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 09, 2003 15:13 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Feb 08, 2003 19:10
Beiträge: 7
Code:
  1.  
  2. Function GetRight(Bitmap : TBitmap) : Integer;
  3. var
  4.  x,y : Integer;
  5. Begin
  6.  result:=0;
  7.  for x:=Bitmap.Width-1 downto 0 do
  8.  &nbsp; for y:=Bitmap.Height-1 downto 0 do
  9.  &nbsp; &nbsp; if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  10.  &nbsp; &nbsp; &nbsp; result:=y;
  11.  &nbsp; &nbsp; &nbsp; exit;
  12.  &nbsp; &nbsp; end;
  13. end;
  14.  

Also GetRight hört sich so an, als wolltest du einen X-Wert und keinen Y-Wert (Result:=X statt Result:=Y)
Code:
  1.  
  2. Function GetBottom(Bitmap : TBitmap) : Integer;
  3. var
  4.  x,y : Integer;
  5. Begin
  6.  result:=0;
  7.  for y:=Bitmap.Height-1 downto 0 do
  8.  &nbsp; for x:=Bitmap.Width-1 downto 0 do
  9.  &nbsp; &nbsp; if Bitmap.Canvas.Pixels[x,y] <> clBlack then begin
  10.  &nbsp; &nbsp; &nbsp; result:=x;
  11.  &nbsp; &nbsp; &nbsp; exit;
  12.  &nbsp; &nbsp; end;
  13. end;
  14.  

Hier das gleiche nochmal andersrum, du willst eine Höhe (unten) und weist dem Ergebnis einen X-Wert zu
Bei GetTop und GetLeft ist's dann wieder richtig

_________________
Give a man a fire and he is warm for a day. <br>Set a man on fire and he is warm for the rest of his life.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 19 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]