Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Графические примитивы в Visual C++  (Прочитано 13593 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Archangel_09
Гость
« : 15-11-2007 22:08 » 

Как делать графику в Visual C++?
« Последнее редактирование: 18-02-2008 15:14 от Вад » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 16-11-2007 04:26 » 

Archangel_09, в оконной процедуре перехватить и обработать сообщение windows , под названием WM_PAINT

а дальше зависит от того, что ты используешь: если библиотека MFC , это обработчик OnPaint , там создаётся контекст устройства CPaintDC dc - на нём рисуешь. А если чистый API хочешь использовать, то вот например (прямо из МСДН пример выдран)
Код:
LRESULT APIENTRY WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
        case WM_PAINT:
            hdc = BeginPaint(hwnd, &ps);

            //TextOut(hdc, 0, 0, "Hello, Windows!", 15);
            //ТУТ РИСУЕШЬ НА КОНТЕКСТЕ , его хендл - hdc

            EndPaint(hwnd, &ps);
            return 0L;

        // Process other messages. 
    }
}
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hwnd;
 
    hwnd = CreateWindowEx(
        // parameters
        );
 
    ShowWindow(hwnd, SW_SHOW);
    UpdateWindow(hwnd);
 
    return msg.wParam;
}


нарисовать примитивы можно так:
MFC:
Код:
dc.SetPixel(int x,int y,COLORREF crColor); // точка
dc.MoveTo(int x,int y); //переместить графический курсор
dc.LineTo(int x,int y); //провести линию до точки от тек.
                        //положения графического курсора
dc.Rectangle(int x1,int y1,int x2,int y2);//примоугольник
dc.Ellipse(int x1,int y1,int x2,int y2 );//эллипс
для задания COLORREF используй макрос RGB(красный,зелёный,синий)

цвет линий , эллипсов и прямоугольников пока можно по умолчанию оставить (цвета линий и фона - это отдельная песенко Отлично ) , сначала это победи...

в API все методы такие же , только вызывать так:
Код:
::SetPixel(hdc,int x,int y,COLORREF crColor);
::MoveTo(hdc,int x,int y);
::LineTo(hdc,int x,int y);
::Rectangle(hdc,int x1,int y1,int x2,int y2);
::Ellipse(hdc,int x1,int y1,int x2,int y2 );

вот... пробуй , надеюсь, я чем то помог )
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 16-11-2007 11:00 » 

Лёш, а где твоя игрушка шелековская? Пусть посмотрит, разберётся.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 16-11-2007 11:05 » 

Джон, код там старый и кривой, не стоит по ней разбирацо то. Хотя , если есть желание , то тут:
https://club.shelek.ru/viewfiles.php?id=3
(ShelekToy 3.5  проект и экзешник)

Но постами выше пример - там достаточно информации для данной задачи , пусть хоть с этим разберётся для начала

« Последнее редактирование: 18-11-2007 06:38 от Алексей1153++ » Записан

Archangel_09
Гость
« Ответ #4 : 18-11-2007 06:03 » new

Благодарю за помощ! Буду сидеть разбираться!!!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines