powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Помогите вписать текст в фигуры !!!!
3 сообщений из 3, страница 1 из 1
Помогите вписать текст в фигуры !!!!
    #37968162
WPFnoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Получил задание , сделать на WPF следущую программу:

1) Программа рисует фигуры с файла, в файле хранятся координаты точек, прога их считывает и выводит на экран.
2) В эти фигуры надо вписать текст, из текстбокса(т.е. по сути пользователь сам вводит текст, жмет enter и текст отображается в фигуре). Фишка в том что текст должен иметь МАКСИМАЛЬНЫЙ размер шрифта (подгонять его должна программа) и располагаться по вертикали или по горизонтали, что должно проверяться в коде и решаться прогой. Перенос(если понадобится) строго по словам, не более 2х строк

1ый пункт я сделал она считывает координаты и выводит на экран фигуры. Вот код:

int i = 1;
int cancount = 0;



public Window1()
{
InitializeComponent();
int kol = 0;
int count = 0;

OpenFileDialog temp = new OpenFileDialog();
temp.FileName = "1";
temp.Title = "Открытие файла";
if (temp.ShowDialog()==true)
{
StreamReader read = new StreamReader(temp.FileName, Encoding.Default);
string n;
while ((n = read.ReadLine()) != null)
{
Polyline figure1 = new Polyline();
int z = 0;
int dop = 0;
int j = 0;
int i = 0;
while (z + dop < n.Length)
{
if (n[z + dop] == ' ')
{
z += dop + 1; dop = 0;
count++;
}
else dop++;
}

z = 0;
dop = 0;

List<double> mas1 = new List<double>();

do
{
if (n[z + dop] == ' ')
{
string k = n.Substring(z, dop);
mas1.Add(Convert.ToDouble(k));
z += dop + 1; dop = 0;

}
else dop++;
}
while (z + dop < n.Length);

List<Point> massiv = new List<Point>();
Point point = new Point();

for (int ii = 0, jj = 0; ii < count; ii++)
{
if (ii % 2 == 0)
{
point.X=mas1[ii];
kol++;
}
else
{
point.Y=mas1[ii];
kol++;
}

if (kol == 2)
{
massiv.Add(point);
jj++; kol = 0;
}

}

for (int iii = 0; iii < count / 2; iii++)
figure1.Points.Add(massiv[iii]);
figure1.Points.Add(massiv[0]);
figure1.Stroke = Brushes.Red;
canvas1.Children.Add(figure1);
count = 0;
massiv.Clear();
mas1.Clear();
cancount++;
}

read.Close();
}
}

а вот со вторым печалька =(
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
Point point1 = new Point();
Label label1 = new Label();
Polyline newpoly = new Polyline();
newpoly = canvas1.Children[i] as Polyline;
point1 = newpoly.Points[0];

if (i <= cancount)
{
i++;

canvas1.Children.Add(label1);

Canvas.SetLeft(label1, point1.X);
Canvas.SetTop(label1, point1.Y);
label1.Content = textBox1.Text.ToString();
}
// MessageBox.Show(label1.ActualWidth.ToString());
//Label asd = new Label();
//canvas1.Children.Add(asd);




else
{
i = 1;
for (int j = 0; j < canvas1.Children.Count; j++)
if (canvas1.Children[j].GetType().Name.Equals("Label"))
canvas1.Children.RemoveAt(j);
}

}
}




}
}

мало того что она не работает как надо, так еще и критует

я не знаю , что делать =( сдавать в среду уже =( Помогите пожалуйста
...
Рейтинг: 0 / 0
Помогите вписать текст в фигуры !!!!
    #37968246
WPFnoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил сделать через TextBlock

tb.Text = textBox1.Text.ToString();

canvas1.Children.Add(tb);


while (tb.Width < canvas1.Children[i].RenderSize.Width)
{



tb.FontSize++;


}

но шрифт не увеличивается
если в цикле добавить
tb.Width++;
шрифт увеличивается но явно вылезает за пределы фигуры (canvas1.Children[i])
...
Рейтинг: 0 / 0
Помогите вписать текст в фигуры !!!!
    #37968430
Фотография skole
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие манипуляции в реальном коде надо делать на уровне Visual, используя DrawingContext
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Помогите вписать текст в фигуры !!!!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]