Koodi yksinkertaisesti invertoi kuvan, mutta erittäin hitaasti. Tee formille PictureBox(Picture1), PictureBox(Picture2), CommandButton(Command1). Siiten vaan lataat jonkun kuvan picture1:een ja painat command1:stä.
'Kuvien Invertoija
'Muista ladata kuva Picture1:een
'T: Solof
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim pt As Long
Dim Pituus, Leveys As Long
Private Sub Command1_Click()
'asetetaan pituus jä leveys
Leveys = Picture1.Width
Pituus = Picture1.Height
Invert Picture1.hdc, Picture2.hdc
End Sub
Private Sub Form_Load()
'Scalemodet päälle
Form1.ScaleMode = 3
Picture1.ScaleMode = 3
Picture2.ScaleMode = 3
Picture1.AutoSize = True
'Säädetään pictureboxien koot
Picture2.Height = Picture1.Height
Picture2.Width = Picture1.Width
End Sub
Sub Invert(Lahde As Long, Kohde As Long)
For p = 1 To Pituus 'Käydään kuvan Pituus läpi
For l = 1 To Leveys 'Käydään Kuvan Leveys Läpi
pt = GetPixel(Lahde, l, p) 'otetaan pixeli boxista
pt = 16777215 - pt 'Invertoidaan värit (luku 16777215 = (256*256*256) -1)
SetPixel Kohde, l, p, pt 'asetetaan pixeli boxiin
DoEvents
Next
Next
End SubOnhan tuo vähän hidasta puuhaa noin. Mahtaisiko BitBlt:llä onnistua sopivien määritysten kanssa?
No ei se must kyl hirvee hidas oo.
Hitaus on katsojan silmässä.
Ei oo yhtää hidas vaik mul o super hidas kone niinku ei voi montaa ohjelmaa ajaa ilma et kaatuu!
bitbltllä muuten onnistuu suoraan sen invertointi:
BitBlt Kohde.hDC, x, y, Lähde.ScaleWidth, Lähde.ScaleHeight, Lähde.hDC, 0, 0, &H660046
luulisin :D
siis noi kohde ja lähde tossa mun edellisessä viestissä on picturelaatikoita
niin ja alkuun vielä tietenkin "Public Declare Function BitBlt Lib "Gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long". sori tää mun hirmunen kasa (3) viestejä peräkkäin
Aihe on jo aika vanha, joten et voi enää vastata siihen.