|
Помогите вписать текст в фигуры !!!!
|
|||
---|---|---|---|
#18+
Добрый день. Получил задание , сделать на 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); } } } } } мало того что она не работает как надо, так еще и критует я не знаю , что делать =( сдавать в среду уже =( Помогите пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2012, 11:06 |
|
Помогите вписать текст в фигуры !!!!
|
|||
---|---|---|---|
#18+
Решил сделать через 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]) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2012, 14:18 |
|
|
start [/forum/topic.php?fid=21&fpage=36&tid=1441665]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 330ms |
total: | 474ms |
0 / 0 |