C # Drawstring чистый прямоугольник Или нет прямоугольника? возможный - PullRequest
1 голос
/ 15 января 2010

вот код, который я использую, мне действительно нужно сделать так, чтобы текст не появлялся внутри поля. это возможно?

int width = (int)g.MeasureString(line, f).Width;
int height = (int)g.MeasureString(line,f).Height;
b = new Bitmap(b, new Size(width, height));
g = Graphics.FromImage(b);

g.Clear(Color.Empty);
g.DrawString(line,f, new SolidBrush(Color.Black), 0, 0);
b.Save(savepoint+line+".tif", System.Drawing.Imaging.ImageFormat.Tiff); 
g.Flush();

Я имею в виду, что вокруг текста, который преобразуется в изображение, не может быть прямоугольника. Поэтому мне нужно следить за тем же цветом, чтобы создать иллюзию отсутствия рамки или никогда не записывать этот период прямоугольника.

1 Ответ

2 голосов
/ 15 января 2010

Используйте цвет Прозрачный для фона и формат файла, который поддерживает прозрачность, например PNG:

var measure = g.MeasureString(line, f);
int width = (int)measure.Width;
int height = (int)measure.Height;
using (Bitmap b = new Bitmap(width, height)) {
  using (Graphics bg = Graphics.FromImage(b)) {
    bg.Clear(Color.Transparent);
    using (Brush black = new SolidBrush(Color.Black)) {
      bg.DrawString(line, f, black, 0, 0);
    }
  }
  b.Save(savepoint+line+".png", System.Drawing.Imaging.ImageFormat.Png); 
}

Я заметил, что вы перезаписали свой экземпляр Graphics, не удалили созданные вами объекты и вызвали Graphics.Flush без видимой причины ...

...