Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Invertointi

Sivun loppuun

solof [14.02.2003 19:41:00]

#

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 Sub

Antti Laaksonen [14.02.2003 21:47:08]

#

Onhan tuo vähän hidasta puuhaa noin. Mahtaisiko BitBlt:llä onnistua sopivien määritysten kanssa?

Monkkats [22.09.2003 09:07:02]

#

No ei se must kyl hirvee hidas oo.

Kossu [25.10.2003 13:16:36]

#

Hitaus on katsojan silmässä.

miiro [08.11.2003 19:27:55]

#

Ei oo yhtää hidas vaik mul o super hidas kone niinku ei voi montaa ohjelmaa ajaa ilma et kaatuu!

Puhveli [23.04.2004 17:40:49]

#

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

Puhveli [23.04.2004 17:41:34]

#

siis noi kohde ja lähde tossa mun edellisessä viestissä on picturelaatikoita

Puhveli [23.04.2004 17:42:36]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta