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 Functionen saanut toimimaan..
ei herjaa mitään mutta ei myöskään toimi.
käytössä vb6
Formin ScaleMode pikseleiksi, niin toimii.
Mukavan vauhdikas.
/me tykkää
Joo, kiva on mutta hieman epätarkaksi menee...
täh, ei toimi alkuunkaan. Pitäskö Pictureboksien nimiä muuttaa?
Öö-ö... ei toimi mullakaan. Pitääkö tehdä jotain bonusta vielä? Koodikin näyttää niin kummalliselta etten tajua miten toi toimii :P
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..
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
Öh höh ei toimi
Mulla ainakin toimii, VB 6, PictureBoxien nimet normaalit ja AutoRedraw truena + formin scalemode pixeleinä.
no-oho sehän meni ja toimi (ku ensi vähä nolas ittensä)
Aihe on jo aika vanha, joten et voi enää vastata siihen.