Перейти к содержанию
СофтФорум - всё о компьютерах и не только

GDI графика в MFC


Рекомендуемые сообщения

Вечер добрый.

У меня такой вопрос:

Как нарисовать круг по заданным координатам центра и радиусу? на VC++

Знаю, что рисовать через Ellipse. использовать dc, определять клиентские области рисования и т.д.

Но нормально работающую програмку написать не могу!

Всё компилируется, но ничего не видно.

Помогите плизззз :) Тока попроще если можно с использованием MFC

Может проще будет на WinApi? от примерчика тоже не откажусь.

И ещё один маленький вопрос из той же темы: как соединить 2 точки прямой?

Опять же MoveTo,LineTo...но как написать полностью работающую программу?

Да...Delphi был попроще... НО позарез нужно на VC++ с использованием MFC

Ссылка на комментарий
Поделиться на другие сайты

BIG_AL: Приведи не работающий код, общественность посмотрит, может ткнет на ошибку.

А на "все написал, но ничего не видно" - тебе только телепат ответить сможет, где и что у тебя не так :)

Ссылка на комментарий
Поделиться на другие сайты

ОК, исправляюсь (я вообще-то в общем спрашивал :D )

Значит перефразирую свой вопрос: как ПРАВИЛЬНО пользоватся процедурой:

BOOL CDC::Ellipse(int upX, int upY, int lowX, int lowY);

ну пишу:

CPaintDC pDC(this);

RECT clientRect;

this->GetClientRect(&clientRect);

CPen BlackPen(PS_SOLID,1,RGB(0,0,0));

pDC.SelectObject(&BlackPen);

pDC.Ellipse(10,10,100,100);

вешаю на обработчик кнопки. Запускаю и ничего не рисуется. что нужно и ГДЕ ещё что-то прописать?

Раньше писал всё на Delphi,а теперь парюсь с MFC :(

Написал курсовик по ООП : "Триангуляция по методу Делоне" в консоле. А хочется шоб оно ж и малевало как-то эти треугольнички, а не тока координаты считало :)

Ссылка на комментарий
Поделиться на другие сайты

Хм... покапался чуть-чуть и вот к чему пришёл:

Меня заинтересовала функция void CsdfDlg::OnPaint() рисует иконку или что-то типа того. Решил же написать похожую функцию:

(программа называется sdf):

void CsdfDlg::Show(int x,int x1,int y1,int y2)

{

CPaintDC dc(this);

dc.Ellipse(x, x1, y1, y2);

}

Определил её также как и определена CsdfDlg::OnPaint() в файлике sdfDlg.h

afx_msg void OnPaint();

afx_msg void Show(int x,int x1,int y1,int y2); //моя функция

По обработчику вызываю:

void CsdfDlg::OnBnClickedButton1()

{

Show(10,10,80,80);

}

ничего не рисуется.

Просмотрел опять же функцию CsdfDlg::OnPaint(). Решил вписать туда мою рисовалку:

CPaintDC dc(this);

dc.Ellipse(10, 10, 100, 100);

Рисует! но мне нужно вызывать функцию с параметрами, а изменять не оч.хотелось.Решил закомментировать всю функцию CsdfDlg::OnPaint().

Клацаю по кнопочке - тоже рисует!

Хм..странно. Смотрю дальше:

if (IsIconic())

{

.....

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint(); // мне заинтеросовало это

}

Решил заменить название своей функции CsdfDlg::Show на CDialog::OnPaint();

Параметры она почему-то не захотела принимать,а определение её я не нашёл :)

но она начинает рисовать сразу при создании формы! что не есть good. Мне нужно чтобы рисовало когда я вызову эту процедуру, а не при создании окна.

Подскажите, как можно по-людски это всё организовать?

Или всё делать таким же макаром? комментировать всю CsdfDlg::OnPaint() и определять свои функции?

Может вопрос и не совсем ворректный, но я тока недавно начал работать с MFC.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...