- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
static public int MeasureDisplayStringWidth(Graphics graphics, string text,
Font font)
{
const int width = 32;
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap (width, 1,
graphics);
System.Drawing.SizeF size = graphics.MeasureString (text, font);
System.Drawing.Graphics anagra = System.Drawing.Graphics.FromImage(bitmap);
int measured_width = (int) size.Width;
if (anagra != null)
{
anagra.Clear (Color.White);
anagra.DrawString (text+"|", font, Brushes.Black,
width - measured_width, -font.Height / 2);
for (int i = width-1; i >= 0; i--)
{
measured_width--;
if (bitmap.GetPixel (i, 0).R != 255) // found a non-white pixel ?
break;
}
}
return measured_width;
}
Ищем размер нарисованной строки. Не моё. Нашел на codeproject.
(Вместо MeasureCharacterRanges)
Lure Of Chaos 14.11.2011 15:08 # −1
rammara 14.11.2011 15:13 # 0
Dummy00001 15.11.2011 00:24 # 0
http://www.codeproject.com/KB/GDI/italicText.aspx
ГК сверху это метод как посчитать *настоящую* длину нарисованого текста, со всеми причиндалами, которые шрифты могут включать. иначе, на пример при копировании из картинки в картинку, будут части шрифта обрезатся.
говно, но в самих виндах.
bugmenot 15.11.2011 00:33 # 0
bugmenot 14.11.2011 15:13 # +1
krypt 14.11.2011 15:17 # 0
rammara 14.11.2011 15:21 # 0
krypt 14.11.2011 15:26 # 0
bugmenot 14.11.2011 15:38 # +1
lucidfoxGovno 14.11.2011 15:55 # −4
Lure Of Chaos 14.11.2011 18:11 # +3
absolut 16.11.2011 20:01 # +3
guest8 09.04.2019 12:04 # −999