Рейтинг:
1
OriginalGriff
TIFF-это графический формат файла, поэтому вам нужно загрузить его, получить контекст, нарисовать на нем и сохранить результат:
using (Image i = new Bitmap(@"D:\Test data\MyPic.Tif"))
{
using (Graphics g = Graphics.FromImage(i))
{
g.DrawString("Test Text", Font, Brushes.Cyan, 100, 100);
}
i.Save(@"D:\Test data\MyPic.Edit.tif", ImageFormat.Tiff);
}
Rocky_Bas
Растровое изображение немного медленное есть ли другой способ сделать то же самое
Rocky_Bas
Это работает, но у меня есть некоторые опасения здесь, Если текст слишком длинный, то текст в конце обрезается. Есть ли какой-нибудь способ, если текст не помещается в строку, то он должен быть напечатан в следующей строке.
OriginalGriff
Проверьте перегрузки DrawString - есть версия, которая указывает прямоугольник вместо точки.
Rocky_Bas
Я не хочу иметь прямоугольник
OriginalGriff
Если у вас нет прямоугольника, то вы не знаете, где строка должна заканчиваться и перезапускаться на новой строке - так что даже если вы "заварите ее сами" с помощью MeasureString (что довольно сложно, если у вас нет непропорционального шрифта и вы не заботитесь о разрывах в середине слов), вам нужна эта информация!
Rocky_Bas
Я использовал приведенный ниже код, но все же он обрезает последнее содержимое, так как оно не подходит
RectangleF rec = новый RectangleF();
rec.X = 85;
запись.Y = 400;
г. DrawRectangles(Ручки.Белый, новый прямоугольник[] { rec });
г. Шнурок(строка.Формат("имя файла: {0}", имя файла), новый шрифт ("Arial", 50, FontStyle.Жирный), Кисти.Красный, rec,
новый StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap, 1003) { Trimming = StringTrimming.Никто });
OriginalGriff
Вы не определили прямоугольник - просто задали ему положение (X, Y) в верхнем левом углу. Прямоугольник нуждается либо в двух координатах (X, Y), либо в паре (X, Y) и паре ширина-высота / размер!
Rocky_Bas
Нет, я использовал этот rec в приведенной ниже строке, просто проверьте, или я что-то еще упустил
г. DrawRectangles(Ручки.Белый, новый прямоугольник[] { rec });
г. Шнурок(строка.Формат("имя файла: {0}", имя файла), новый шрифт ("Arial", 50, FontStyle.Жирный), Кисти.Красный, rec,
новый StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.NoWrap, 1003) { Trimming = StringTrimming.Никто });
OriginalGriff
Посмотрите на определение вашей прямой кишки: сколько информации вы на самом деле вкладываете в нее?
Rocky_Bas
Извини, что я тебя не понял.
OriginalGriff
RectangleF rec = новый RectangleF();
rec.X = 85;
rec.Y = 400;
Где устанавливается ширина? Высота?
Rocky_Bas
даже после установки ширины и высоты я получаю ту же проблему.
OriginalGriff
Для меня это прекрасно работает:
using (Image i = new Bitmap(@"D:\Test data\MyPic.Tif"))
{
using (Graphics g = Graphics.FromImage(i))
{
using (Font font = new System.Drawing.Font("Verdana", 20.0f))
{
RectangleF rect = new RectangleF(10.0f, 10.0f, 100.0f, 50.0f);
g.DrawString("This is Test Text which should be wrapped.", font, Brushes.Black, rect, StringFormat.GenericDefault);
}
}
i.Save(@"D:\Test data\MyPic.Edit.tif", ImageFormat.Tiff);
}
Rocky_Bas
это работает, но я хочу сказать, что если текст, который я добавляю, слишком длинный, то текст обрезается в углу строки, вместо этого я ожидаю, что он появится в следующей строке
OriginalGriff
Так почему же вы указываете, что он не должен обертываться?
новый StringFormat(StringFormatFlags.LineLimit | StringFormatFlags.Без переноса 1003)
Что ты думаешь без переноса был там?