Farbwerte korrigieren

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Kabelbinder

Sieger des WM-Contest 2006

Betreff: Farbwerte korrigieren

BeitragMi, Dez 29, 2004 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man Bilder mit RotateImage drehen will, muss man ja TformFilter auf 0 setzen, damit man Später keinen unschönen Rand in der Mask-Farbe um das Bild herum hat.
Mit dieser einfachen Funktion kann man diesen Rand etwas reduzieren:

Code: [AUSKLAPPEN]
Graphics 640,480,16,1
TFormFilter 1

bild = CreateImage(100,100)
MaskImage bild,255,0,255
MidHandle bild
SetBuffer ImageBuffer(bild)
Color 255,0,255
Rect 0,0,100,100
Color 0,0,255
Rect 0,40,100,20
Color 255,255,0
Rect 40,0,20,100
Color 255,0,0
Oval 20,20,60,60

Dim kreuz(180)
For i = 1 To 180 Step 2
kreuz(i) = CopyImage(bild)
RotateImage kreuz(i),i
;========================================
korrigiere(kreuz(i),255,0,255,150,150,80)
;========================================
kreuz(i+1)=CopyImage(kreuz(i))
Next

rot = 1

Function korrigiere(img,rw,gw,bw,breit,hoch,grenze)
SetBuffer ImageBuffer(img)
LockBuffer
For nr = 0 To breit
For nu = 0 To hoch
norm = rw*$10000+gw*$100+bw

wert = ReadPixelFast(nr,nu)
r = (wert And $FF0000)/$10000
g = (wert And $FF00)/$100
b =  wert And $FF

If r>rw-grenze And r<rw+grenze And g>gw-grenze And g<gw+grenze And b>bw-grenze And b<bw+grenze Then
WritePixelFast nr,nu,norm,ImageBuffer(img)
EndIf
Next
Next
UnlockBuffer
SetBuffer BackBuffer()
End Function

SetBuffer BackBuffer()
Repeat

If rot = 180 Then
rot = 1
Else
rot = rot + 1
EndIf

DrawImage kreuz(rot),320,240

Flip
Cls
Until KeyHit(1)
End


Wenn ihr Zeile 21 auskommentiert, ist der Rand wieder erkennbar.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group