mboost-dp1

Intptr problem


Gå til bund
Gravatar #1 - MadsHaupt
14. mar. 2013 19:33
Jeg har lavet mit eget billede format men det billede format bliver læst meget langsomt fordi for at jeg kan bruge det til nået skal jeg have konverteret det til en bitmap og så skal jeg jo sætte alle de pixel der er i bitmapen og det tager lang tid, og så har jeg fundet ud af at man skulle bruge Bitmap.LockBits-funktionen man der skal man jo bruge intptr, men hvordan bruger man intptr?.

    Public Sub New(ByVal Image As Image)
Dim Bitmap As New Bitmap(Image)
Dim Pixs(Bitmap.Height - 1)() As Color
For Y = 0 To Bitmap.Height - 1
Dim PixX(Bitmap.Width - 1) As Color
For X = 0 To Bitmap.Width - 1
PixX(X) = Bitmap.GetPixel(X, Y)
Next
Pixs(Y) = PixX
Next
Pixels = Pixs
End Sub


   Public Function ToBitmap() As Bitmap
Dim a As New Bitmap(Pixels(0).Length, Pixels.Length)
For X = 0 To a.Width - 1
For Y = 0 To a.Height - 1
a.SetPixel(X, Y, Pixels(Y)(X))
Next
Next
Return a
End Function
Gravatar #2 - Mort
15. mar. 2013 11:26
Gravatar #4 - MadsHaupt
15. mar. 2013 14:48
Jeg har fundet ud af hvordan man bruger intptr men jeg ved stadi ikke hvordan man bruger intptr i Bitmap.LockBits funktionen
Gravatar #5 - MadsHaupt
15. mar. 2013 18:02
Jeg har fundet ud af det. :)

    Dim a As New Bitmap(1, 1)
Dim b As IntPtr = a.LockBits(New Rectangle(0, 0, a.Width, a.Height), Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppArgb).Scan0
Dim c(a.Width * a.Height * 4 - 1) As Byte
Marshal.Copy(b, c, 0, a.Width * a.Height * 4)
Gravatar #6 - gramps
15. mar. 2013 18:19
#5
Flot.

Og super at du skriver svaret herinde.

http://imgs.xkcd.com/comics/wisdom_of_the_ancients...

;-)
Gravatar #7 - csstener(^,^)
15. mar. 2013 18:39
#6
hader når folk ikke giver respons tilbage har oplevet det en 4-5 gange(lidt ala dit billede).

#5 pænt af dig at give respons ;-)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login