Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Рисование на Image С#4


Автор: SCAR 30.9.2011, 20:02
Я на С# перешел совсем недавно, поэтому многих тонкостей не знаю, подскажите пожалуйста, как мне прорисовать объект типа Bitmap (из класса System.Drawing) на объект Image расположенный на форме (System.Windows.Forms). Просмотрел весь интернет, везде есть описание прорисовки только на PictureBox  (((

Автор: Cheloveck 30.9.2011, 20:47
Цитата(SCAR @  30.9.2011,  21:02 Найти цитируемый пост)
а в 4м шарпе его просто нет.... 

http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.aspx O_O

Цитата(SCAR @  30.9.2011,  21:02 Найти цитируемый пост)
как мне прорисовать объект типа Bitmap (из класса System.Drawing) на объект Image расположенный на форме (System.Windows.Forms)

Как ты умудрился положить на форму Image? Это же не компонент.

Методом угадывания мыслей, предположу, что ты хочешь рисовать картинку на форме.
Код

    public class MainWindow : Form
    {
        private Image image;
        
        public MainWindow()
        {
            InitImage();
            
        }
    
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint (e);
            e.Graphics.DrawImage(image, 10, 10);
        }
        
        private void InitImage()
        {
            if(image != null)
                return;
            image = new Bitmap(100, 100);
            using(Graphics gr = Graphics.FromImage(image))
            {
                gr.FillRectangle(new SolidBrush(Color.Brown), 0, 0, 100, 100);
            }
        }
    }


PS задай вопрос поподробнее.

Автор: SCAR 30.9.2011, 20:59
Насколько я понял у меня просто какой-то неправильный VisualStudio ))) Вот хaml описание объекта: 
Код

  <Image Height="531" HorizontalAlignment="Left" Margin="0,21,0,22" Name="image1" Stretch="None" VerticalAlignment="Center" Width="616" Grid.RowSpan="2" />


В панели элементов нет PictureBox, и даже когда я прописываю его в ручную, то выдает ошибку. Пробовал добавлением элементов, но на нем галочка стоит. ничего не понимаю :( А насчет его отсутствия в C#4 вычитал в моем локальном MSDN, хотя уже понял что это бред ))))

Кстати, этот объект Image, находится в System.Windows.Forms.

Автор: Cheloveck 30.9.2011, 21:19
Цитата(SCAR @  30.9.2011,  21:59 Найти цитируемый пост)
Вот хaml описание объекта

http://ru.wikipedia.org/wiki/XAML -- это http://ru.wikipedia.org/wiki/WPF. WPF не есть http://ru.wikipedia.org/wiki/WinForms. Покури матчасть немного

Автор: SCAR 30.9.2011, 21:25
Смысл понял. Большое спасибо!!! А не могли бы вы поподробнее описать как мне все правильно сделать для WPF? Или где почитать, а то со временем сдачи не особо ((

Автор: Cheloveck 30.9.2011, 21:49
SCAR, с WPF работал мало. Сейчас мне не доступна Visual Studio 2010. Поищи книги в интернетах...

Автор: SCAR 30.9.2011, 22:06
Окей. Спасибо и на этом. smile

Автор: SCAR 1.10.2011, 11:10
Все, я разобрался. Спасибо за подсказки. Если кому понадобится, то вот реализация:

В XAML описании размещаем элемент Polygon, например так:
 <Polygon Height="531" HorizontalAlignment="Left" Margin="0,21,0,22" Name="polygon" VerticalAlignment="Center" Width="616" Grid.RowSpan="2" />

И в обработчик пишем, например такое: 

Код

polygon.Stroke = Brushes.Black;
polygon.Points.Add(new System.Windows.Point(x, y));

Автор: SCAR 1.10.2011, 22:22
Нет, это бред, компонент polygone автоматически соединяет концы всех линий (((

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)