Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Kuvan pyörittäminen 3

Sivun loppuun

petrinm [22.05.2004 12:29:44]

#

Kuvan pyörittäminen ykköstä ja kakkosta nopeampi kuvan kääntäminen. Tarvitsee kaksi Picture boksia, eikä muuta. Kuva laitetaan ykkös picture boksiin ja laita kummankin picture boksin AutorRedraw True:ksi.

Voit Ladata lähdekoodin Tästä

Edit: Pari korjausta tehty.

Option Explicit
Private Type POINTAPI
    x As Long
    y As Long
End Type

Dim Pt(0 To 2) As POINTAPI
Dim kulma As Double

Private Const PI As Double = 3.14159265358979
Private Declare Function PlgBlt Lib "gdi32" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As Long

Private Sub Form_Load()
   kulma = 45  'käännettävä kulman suuruus
   Rotate Picture2, Picture1, kulma / 100
End Sub

Private Sub Rotate(pic1 As PictureBox, pic2 As PictureBox, Rotate As Double)
   Dim a As Integer 'Kääntö prosessi
   Pt(0).x = 0
   Pt(0).y = 0
   Pt(1).x = pic2.Width
   Pt(1).y = 0
   Pt(2).x = 0
   Pt(2).y = pic2.Height
   For a = 0 To 2
       Pt(a) = RotateP(pic2.Width / 2, pic2.Height / 2, Pt(a), Rotate)
   Next
   PlgBlt pic1.hDC, Pt(0), pic2.hDC, 0, 0, pic2.Width, pic2.Height, ByVal 0&, ByVal 0&, ByVal 0&
   pic1.Refresh
End Sub

Private Function RotateP(ByRef x As Long, ByRef y As Long, ByRef Point As POINTAPI, Rotate As Double) As POINTAPI
   Dim Tmp1 As Double
   Dim Tmp2 As Double
   Tmp1 = Point.x - x
   Tmp2 = Point.y - y
   Point.x = Tmp1 * Cos(Rotate) - Tmp2 * Sin(Rotate)
   Point.y = Tmp1 * Sin(Rotate) + Tmp2 * Cos(Rotate)
   Point.x = Point.x + x
   Point.y = Point.y + y
   RotateP = Point
End Function

tuomas [22.05.2004 20:22:38]

#

en saanut toimimaan..
ei herjaa mitään mutta ei myöskään toimi.
käytössä vb6

Blaze [22.05.2004 21:47:01]

#

Formin ScaleMode pikseleiksi, niin toimii.

Mukavan vauhdikas.
/me tykkää

Bill Keltanen [23.05.2004 09:24:04]

#

Joo, kiva on mutta hieman epätarkaksi menee...

mamaze [23.05.2004 17:16:13]

#

täh, ei toimi alkuunkaan. Pitäskö Pictureboksien nimiä muuttaa?

sooda [23.05.2004 20:06:26]

#

Öö-ö... ei toimi mullakaan. Pitääkö tehdä jotain bonusta vielä? Koodikin näyttää niin kummalliselta etten tajua miten toi toimii :P

makeuu [24.05.2004 07:52:58]

#

Mulla ei käänny, mutta ei herjaakkaan.. scalemode pixeleinä, on autoreddrawit ja vb6... ei käänny sitten millään.. mikähän näppäin lienee? xD.. voisin vaikka soveltaaa tätä mun johonkin projektiin..

pipopää [16.06.2004 15:36:53]

#

lainaus:

Mulla ei käänny, mutta ei herjaakkaan.. scalemode pixeleinä, on autoreddrawit ja vb6... ei käänny sitten millään.. mikähän näppäin lienee? xD.. voisin vaikka soveltaaa tätä mun johonkin projektiin..

sama täällä ja mulla on vbcce5

Zapi [14.08.2004 17:08:31]

#

Öh höh ei toimi

Nobo [22.12.2005 22:59:50]

#

Mulla ainakin toimii, VB 6, PictureBoxien nimet normaalit ja AutoRedraw truena + formin scalemode pixeleinä.

masterchief [19.04.2006 08:27:44]

#

no-oho sehän meni ja toimi (ku ensi vähä nolas ittensä)


Sivun alkuun

Vastaus

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

Tietoa sivustosta