Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VC++ Как рисовать графические примитивы на форме? 
:(
    Опции темы
Apelsin
Дата 2.5.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Собственно проблема... Никак не могу заробраться.
Если это вообще возможно - приведите, пожалуйста, пример... Облазил много сайтов, но... тот уровень на котором там преподносят информацию, очень высок...
PM MAIL   Вверх
Albor
Дата 2.5.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для начала попробуй рисовать в функции OnPaint, она определяется по умолчанию в любом диалоговом приложении. Начни с функций класса CDC MoveTo и LineTo. Например вставь это в начало OnPaint
Код

CDC * p=this->GetWindowDC();
    p->LineTo(100,100);

Увидишь результат, развивай дальше. Читай про контекст устройства. Подобным способом производится печать.
PM MAIL ICQ   Вверх
Apelsin
Дата 2.5.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ээээ.... 
Albor, как это событие OnPaint вызвать?
Видимо, сказывается что целый день вожусь с этим, и уже просто мозг хочет готового решения :(

Это сообщение отредактировал(а) Apelsin - 2.5.2009, 21:32
PM MAIL   Вверх
Apelsin
Дата 2.5.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Выбрал Form1, у нее Events, в них событие Paint:
    
Код

private: System::Void Form1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) 
{
        e->Graphics->DrawLine(gcnew Pen(Color::Red), 1,1, 111,111);
}

Таким образом нарисовал Линию...
Но... как мне теперь... при нажатии на кнопку рисовать что-нибудь...?
Где брать эту переменную e?
Заранее благодарю за ответ smile
PM MAIL   Вверх
Apelsin
Дата 2.5.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

                     Graphics^ gr = this->CreateGraphics();
                     gr->DrawLine(gcnew Pen(Color::Red), 111, 111, 211, 211);

Мда... этого сочетания символов я искал 8 часов smile))) Ну ничего, самое главное упорство smile) 
PM MAIL   Вверх
Albor
Дата 3.5.2009, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужно было в теме указать вид проекта. Я тебе рассказываю про рисование в MFC, а ты используешь Forms smile . Но направление ты понял. Если хочешь рисовать по кнопке, то создай массив, скажем фигур, по нажатию кнопки добавляешь фигуру в массив и вызываешь перерисовку окна. А в событии Paint отрисовываешь всё что есть в массиве. Извини, подробнее не подскажу, так как не работал с WinForms.
PM MAIL ICQ   Вверх
Apelsin
Дата 3.5.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Albor, тут новый вопрос возник... реализую класс Точка... Метод Show() должен рисовать ее на форме (да, задания бредовые, я ставлю сам их себе пока что smile (от простого к сложному иду smile )
Вот что есть:
Код

//point.h
#pragma once

ref class point
{
private:
    int x;
    int y;
public:
    point(void);
    point(int, int);
    void SetX(int);
    void SetY(int);
    void Show();
};


Код

//point.cpp
#include "StdAfx.h"
#include "point.h"


point::point(void)
{
}
point::point(int x, int y)
{
    point::x = x;
    point::y = y;
}
void point::SetX(int x)
{
    point::x = x;
}
void point::SetY(int Y)
{
    point::y = y;
}
void point::Show()
{
    // Вот тут надо написать ф-ю которая будет просто рисовать точку на Form1. на главной форме программы.. Как?:)
            // возможно все что написано выше  - для вас смех, но я только учусь :))) 
}

А вот этим я задаю координаты точки и пытаюсь вызвать ф-ю прорисовки... Видимо в нее надо передавать этот аргумент е, но как - не знаю...
Код

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
                             {


                point p;
                p.SetX(12);
                p.SetY(12);
                p.Show();

             }

Заранее спасибо smile
PM MAIL   Вверх
Apelsin
Дата 3.5.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Решено вот так:
Код

//point.cpp
...
...
void point::Show(System::Drawing::Graphics^  e)
{
    e->DrawLine(gcnew System::Drawing::Pen(System::Drawing::Color::Red), point::x, point::y, point::x+1, point::y+1); //КАК НАРИСОВАТЬ
// точку - я не разобрался.. неужели нельзя ? :)) 
}

Код

//point.h
#pragma once

ref class point
{
private:
    int x;
    int y;
public:
    point(void);
    point(int, int);
    void SetX(int);
    void SetY(int);
    void Show(System::Drawing::Graphics^);
};


вызывать так:
Код

Graphics^ gr = this->CreateGraphics();
point p;
p.SetX(12);
p.SetY(12);
p.Show(gr);

Видимо это все я через одно место делаю... Что за  MFC?

Это сообщение отредактировал(а) Apelsin - 3.5.2009, 12:56
PM MAIL   Вверх
Albor
Дата 4.5.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MFC - фундаментальные классы для программирования в Windows, говорят устаревшее, так что осваивай новое!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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