Пятница, 29 Ноября 2024, 07:37

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как нарисовать в окошке?
MatouДата: Суббота, 12 Марта 2011, 16:23 | Сообщение # 1
Исходный коТ
Сейчас нет на сайте

Допустим у меня есть некое окошко напрограммированое при помощи WinAPI, код можете не читать, там ничего интересного нет, выложил его чтобы показать что я якобы знаю как окошко в WinAPI сделать:


Суть такова, хочу в этом окошке без излишних библиотек (в особенности без ОпенГЛ и ДиректХ), с использованием одной только <windows.h> нарисовать точечку, кружочек и линию, желательно разноцветные. Вопрос - как быть?

ЗЫ VS2008



LunarPixelДата: Суббота, 12 Марта 2011, 16:54 | Сообщение # 2
старожил
Сейчас нет на сайте
Уххх... ну сейчас вспомню что да как.. на С давно не кодил.

Создавай приложение для win32.

Заходим в фаил с расширением .cpp
После всего кода который появится пиши:

void Paint(HWND hwnd)
{
SetPixel(hdc, 100, 100, RGB(100, 100, 100)); // рисует точку с координатами 100:100 и цветом RGB(100, 100, 100)
Ellipse(hdc,20,30,40,60); //рисует эллипс вписанный в прямоугольник (цыфры - координаты верхнего левого и нижнего плавого угла прямоугольника)
}

У тебя так же будет в проекте фаил с расширением .h
В него надо дописать

void Paint(HWND hwnd);

Далее ещё в файле .cpp в функции WndProc допиши Paint(hWnd); при обработке сообщения MW_PAINT если не ошибаюсь.

Блин, вылетела из головы функция рисования линии biggrin
Ну хоть то что написал попробуй сделать...


Kefir87Дата: Суббота, 12 Марта 2011, 17:01 | Сообщение # 3
участник
Сейчас нет на сайте
Code
case WM_PAINT:
             hdc = BeginPaint(hwnd, &ps);
             // Рисуем эллипс.
             Ellipse(hdc, 5, 10, 30, 40);
             // Рисуем скругленный прямоугольник.
             RoundRect(hdc, 35, 10, 85, 60, 25, 15);
             // Рисуем 2 параллельные линии.
             MoveToEx(hdc, 10,  70, NULL);
             LineTo(hdc, 60,  70);
             MoveToEx(hdc, 10,  80, NULL);
             LineTo(hdc, 60,  80);
             // Выводим текст.
             TextOut( hdc, 10, 100, "Some text", 9);
             EndPaint(hwnd, &ps);
LunarPixelДата: Суббота, 12 Марта 2011, 17:05 | Сообщение # 4
старожил
Сейчас нет на сайте
MoveToEx(hdc, 10, 70, NULL);
LineTo(hdc, 60, 70);

Kefir87, hands Точно... вот так линию рисовать biggrin
Но всё же лучше это не сразу в WM_PAINT сувать, а сначала в функцию.. А потом уже функцию в WM_PAINT. wink

Сообщение отредактировал LunarPixel - Суббота, 12 Марта 2011, 17:05
MatouДата: Суббота, 12 Марта 2011, 17:06 | Сообщение # 5
Исходный коТ
Сейчас нет на сайте
А как мне hdc определить? А то компилятор рукается
Code
error C2065: 'hdc' : undeclared identifier



LunarPixelДата: Суббота, 12 Марта 2011, 17:07 | Сообщение # 6
старожил
Сейчас нет на сайте
void Paint(HWND hwnd)
{
HDC hdc;
........

}




Сообщение отредактировал LunarPixel - Суббота, 12 Марта 2011, 17:08
Kefir87Дата: Суббота, 12 Марта 2011, 17:10 | Сообщение # 7
участник
Сейчас нет на сайте
Code
void Paint(HWND hwnd)
{
HDC hdc;
........

}

И структуру для рисования нужно объявить

Code
void Paint(HWND hwnd)
{
HDC hdc;
PAINTSTRUCT ps;
........

}


Сообщение отредактировал Kefir87 - Суббота, 12 Марта 2011, 17:10
LunarPixelДата: Суббота, 12 Марта 2011, 17:11 | Сообщение # 8
старожил
Сейчас нет на сайте
Так, объединил свое и Kefir87'a:

void Paint(HWND hwnd)
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd, &ps);

SetPixel(hdc, 100, 100, RGB(100, 100, 100));
Ellipse(hdc,20,30,40,60);

EndPaint(hwnd, &ps);
}

Добавлено (12.03.2011, 17:11)
---------------------------------------------
Kefir87, опередил happy


MatouДата: Суббота, 12 Марта 2011, 17:14 | Сообщение # 9
Исходный коТ
Сейчас нет на сайте
LunarPixel, Kefir87, Спасибо, остальное легко наэмэсдиэнить можно) Обоим поставить плюсы не получается, Кефиру только через 7 дней смогу.


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг