Всем привет мне нужно преобразовть текст в коллекцию точек. Использую для этого GraphicsPath
но не получается ожидаемый результат.
GraphicsPath myPath = new GraphicsPath();
// Set up all the string parameters.
string stringText = "Sample Text";
System.Drawing.FontFamily family = new System.Drawing.FontFamily("Arial");
int fontStyle = (int)System.Drawing.FontStyle.Italic;
int emSize = 26;
System.Drawing.Point origin = new System.Drawing.Point(100, 100);
StringFormat format = StringFormat.GenericTypographic;
// Add the string to the path.
myPath.AddString(stringText,
family,
fontStyle,
emSize,
origin,
format);
//sample 1
Bitmap bitmap = new Bitmap(480, 480);
using (var gr = Graphics.FromImage(bitmap))
{
gr.Clear(System.Drawing.Color.White);
gr.FillPath(System.Drawing.Brushes.Red, myPath);
}
bitmap.Save(@"D:\test.bmp");
//sample 2
Bitmap bitmap1 = new Bitmap(480, 480);
using (var gr = Graphics.FromImage(bitmap1))
{
gr.Clear(System.Drawing.Color.White);
gr.DrawPolygon(Pens.Black, myPath.PathPoints);
}
bitmap1.Save(@"D:\test1.bmp");
на выходе в первом случае все как часы, а во втором результат немного другой.
Как можно получить правильную коллекцию точек используя PathPoints
?
Под правильной я имею в виду без эффекта, как будто, не отрывая ручки написан текст.
Пример 1
Пример 2
DrawPolygon отрисовывает многогранник по точкам. Точки у вас неприрыны, от сюда и появляется эффект "как будто, не отрываю ручки написан текст".
Как решение - разделить каждую букву текста на отдельные массивы. Сделать это можно примерно так:
string stringText = "Sample Text";
System.Drawing.FontFamily family = new System.Drawing.FontFamily("Arial");
int fontStyle = (int)System.Drawing.FontStyle.Italic;
int emSize = 26;
System.Drawing.Point origin = new System.Drawing.Point(100, 100);
StringFormat format = StringFormat.GenericTypographic;
var myPaths = new List<GraphicsPath>();
foreach (var symbol in stringText)
{
var gp = new GraphicsPath();
gp.AddString(symbol.ToString(),
family,
fontStyle,
emSize,
origin,
format);
myPaths.Add(gp);
}
//sample 1
Bitmap bitmap = new Bitmap(480, 480);
foreach (var myPath in myPaths)
{
using (var gr = Graphics.FromImage(bitmap))
{
gr.Clear(System.Drawing.Color.White);
gr.FillPath(System.Drawing.Brushes.Red, myPath);
}
}
bitmap.Save(@"D:\test.bmp");
//sample 2
Bitmap bitmap1 = new Bitmap(480, 480);
foreach (var myPath in myPaths)
{
using (var gr = Graphics.FromImage(bitmap1))
{
gr.Clear(System.Drawing.Color.White);
gr.DrawPolygon(Pens.Black, myPath.PathPoints);
}
}
bitmap1.Save(@"D:\test1.bmp");
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть сайт для покупка автомобилейВот ссылка: http://www
Код ниже работает с ошибкой: "Extern sheet is part of LinkTable"Использую NPOI 2
Здравствуйте! Хотелось бы спросить советаЗадача такова: у нас есть 3d модель, допустим цилиндр, и развёртка этой модели
Помогите кто знает как восстановить панель навигации! Хоть и бонально вопрос звучит но я уже визде в нём протыкался немогу понять как восстановить...