ReadPixel / WritePixel - Flags wegen Rückständen?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Thorsten

Betreff: ReadPixel / WritePixel - Flags wegen Rückständen?

BeitragDi, Jan 11, 2011 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe ein Problem mit einer selbstgeschriebenen Funktion, die Images um einen vorgegebenen Grad verzerren soll.

i ist dabei die Zählvariable die die Höhe des Images von oben nach unten abläuft;
k geht bei jedem Durchlauf von links nach rechts, liest jedes Pixel aus dem Stammimage aus und kopiert es dann um "grad" nach rechts.

Grundlegend funktioniert es auch einwandfrei; jedoch habe ich teilweise auf Bildern (alle mit PNG Transparenz) Rückständen, woher mögen die wohl kommen? Muss ich bestimmte Flags setzen?

Ich lade in ein paar Minuten ein Beispiel hoch, wie das ganze aussieht.
Danke schonmal für eure Aufmerksamkeit.

Code: [AUSKLAPPEN]
Function shiftImage:TImage(img:TImage, grad:Int)
   Local i:Int
   Local k:Int
   
   Local img2:TImage = CreateImage(img.width + grad, img.height)

   Local pixmap:TPixmap = LockImage(img)
   Local pixmap2:TPixmap = LockImage(img2)
   
   For i = 0 To img.height - 1
      If i <= grad
         For k = 0 To img.width - 1
            WritePixel(pixmap2, (grad - i) + k, i, ReadPixel(pixmap, k, i))
         Next
      Else
         For k = 0 To img.width - 1
            WritePixel(pixmap2, k, i, ReadPixel(pixmap, k, i))
         Next
      EndIf
   Next
   
   UnlockImage(img)
   UnlockImage(img2)   
   
   Return img2
End Function

Xeres

Moderator

BeitragDi, Jan 11, 2011 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier' es mal mit pixmap2.ClearPixels( argb ) und einem auffälligen Farbwert, ob deine Routine danach wirklich alle Pixel ersetzt.
"To img.height - 1" ist äquivalent zu "Until img.height"
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ToeB

BeitragDi, Jan 11, 2011 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das Problem bei dem drehen der Pixel ist halt, das es ungenauigkeiten gibt, und die werte meinstens auf oder abgerundet werden (x und y Position), kommen die Rückstände zustande.. Warum benutz du denn nicht SetRotation ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Thorsten

BeitragDi, Jan 11, 2011 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich drehe das Bild nicht, ich verschiebe die Pixel horizontal.

Edit : ClearPixels funktioniert wunderbar, dankeschön Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group