Ik heb de volgende code:
Diverse webpagina's heb ik er al op nageslagen maar de code blijft de verkeerde waarden teruggeven. Na het het uitvoeren zijn de resultaten 0 en 0.
Ik heb de bitmap al opgeslagen om te kijken of deze toevallig niet helemaal zwart is maar het wordt netjes een plaatje met text er in. Het draait gewoon onder de GUI thread.
De compiler geeft niets aan en alle websites geven soortgelijke code weer. Dus ik heb eigenlijk geen idee waar ik de fout zoeken moet. Kan iemand mij verder helpen?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| unsafe class UnsafeBitmapLogic { public Int32[] GetTextlength(Int32 textW, Int32 textH, string text, Font f, Color textcolor, Color backcolor) { Bitmap bmp = new Bitmap(textW, textH, PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage((Image) bmp); Brush textb = new SolidBrush(textcolor); Brush bmpb = new SolidBrush(backcolor); g.FillRectangle(bmpb, 0.0f, 0.0f, textW, textH); g.DrawString(text, f, textb, 0.0f, 0.0f); Rectangle r = new Rectangle(0,0,textW, textH); BitmapData b1 = bmp.LockBits(r, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); byte* imagePointer1 = (byte*)(void*)b1.Scan0; Int32 nOffset = b1.Stride - (bmp.Width * 4); Int32 bw = bmp.Width * 4; Int32 i = 0; Int32 i1; Int32[] wh = new Int32[2] { 0, 0 }; while(i < bmp.Height) { i1 = 0; while (i1 < bw) { if ((imagePointer1[0] == textcolor.B)) //&& (imagePointer1[1] == textcolor.G) && (imagePointer1[2] == textcolor.R)) { if (i1 > wh[0]) { wh[0] = i1 / 4; } if (i > wh[1]) { wh[1] = i; } imagePointer1 += 4; } imagePointer1 += nOffset; i1 += 4; } i++; } bmp.UnlockBits(b1); g.Dispose(); return wh; } |
Diverse webpagina's heb ik er al op nageslagen maar de code blijft de verkeerde waarden teruggeven. Na het het uitvoeren zijn de resultaten 0 en 0.
Ik heb de bitmap al opgeslagen om te kijken of deze toevallig niet helemaal zwart is maar het wordt netjes een plaatje met text er in. Het draait gewoon onder de GUI thread.
De compiler geeft niets aan en alle websites geven soortgelijke code weer. Dus ik heb eigenlijk geen idee waar ik de fout zoeken moet. Kan iemand mij verder helpen?