Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текст в фигурах 
:(
    Опции темы
WPFnoob
  Дата 22.9.2012, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.9.2012

Репутация: нет
Всего: нет



Добрый день.  Получил задание , сделать на 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 )
Присоединённый файл  file.txt 0,09 Kb
PM MAIL   Вверх
WPFnoob
Дата 22.9.2012, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.9.2012

Репутация: нет
Всего: нет



Решил сделать через 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])
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.