Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.26.152] |
|
Страницы: (16) « Первая ... 3 4 [5] 6 7 ... 15 16 все ( Перейти к последнему сообщению ) |
Сообщ.
#62
,
|
|
|
По идее - да. Но, помню, надо было - не работало... Пришлось откуда-то выдирать, и малевать через полигоны. |
Сообщ.
#63
,
|
|
|
Тока шо проверил.
Делаем пустой MFC SDI прожект (к примеру, TestGDI). void CTestGDIView::OnDraw(CDC* pDC) { CTestGDIDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CPen* pOldPen = pDC->GetCurrentPen(); CPen red_dot_pen(PS_DOT, 10, RGB(255, 0, 0)); CPen green_dot_pen(PS_DOT, 1, RGB(0, 255, 0)); CRect rc; GetClientRect(rc); pDC->SelectObject(&red_dot_pen); pDC->MoveTo(rc.left, rc.top); pDC->LineTo(rc.right, rc.bottom); pDC->SelectObject(&green_dot_pen); pDC->MoveTo(rc.left, rc.bottom); pDC->LineTo(rc.right, rc.top); pDC->SelectObject(pOldPen); } Получаем, как я гениально предсказывал, пургу: |
Сообщ.
#64
,
|
|
|
Взялся я за компиляцию этой библы в Dev-C++ (компилятор GCC) и проверке примера.
В целях совместимости добавил следующие строки в файл dgmltest.cpp (переименован от test.cpp) : #ifdef __WIN32 #include "DGML_Init.h" #else #include <graphics.h> #include <conio.h> #endif На этом коде проверял, компилируется в Dev-C++ без проблем, но есть баги с выводом текста. #ifdef __WIN32 #include "DGML_Init.h" #else #include <graphics.h> #include <conio.h> #endif #include <stdlib.h> #include <stdio.h> int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor()); line (0, 0, getmaxx(), getmaxy()); /* for centering screen messages */ settextjustify(CENTER_TEXT, CENTER_TEXT); /* output a message to the screen */ outtextxy(midx, midy, "press any key to clear the screen:"); /* wait for a key */ getch(); setbkcolor(5); /* clear the screen */ cleardevice(); /* output another message */ outtextxy(midx, midy, "press any key to quit:"); /* clean up */ getch(); closegraph(); return 0; } Текста "press any key to clear the screen:" на экране не видно при использовании DGML (что-то с цветами?). В BC 3.1 же всё выводится. |
Сообщ.
#65
,
|
|
|
Romtek
Текст пока еще не реализован. Функция outtextxy пока выводит текст только для отладки. А в списке функций она отмечена знаком +, потому что сама ф-ция реализована, нет кода по управлению цветом и шрифтами... P.S. В дальнейшем знаком + будут отмечаться функции, полностью показавшие идентичный тест. Добавлено Перечитал и понял, какой бред написал. В общем, Romtek, спасибо за поддержку в отлавливании багов. |
Сообщ.
#66
,
|
|
|
Для компиляции libdgml в Dev-Cpp нужно указать линкеру ключ
-lgdi32 Для компиляции dgmltest нужно указать линкеру ключи -lgdi32 -ldgml 2Der_Meister Я внёс маленькие поправки в имена файлов: system.cpp -> dgmlcore.cpp test.cpp -> dgmltest.cpp , добавил заголовок с __Win32, остального не касался. Прилагаю архив с исходниками для компиляции в Dev-C++ (тестировал в 4.9.9.2). Там всё готово для компиляции. Нужно только запустить сначала libdgml.dev и скомпилировать, потом тоже самое с dgmltest.dev. Прикреплённый файлdgml.rar (19.27 Кбайт, скачиваний: 272) |
Сообщ.
#67
,
|
|
|
Romtek
Ок, скоро обновлю дистрибутив и wiki. Поскольку многие хотят пощупать либу прямо сейчас, выкладываю примеры, которые она уже реально обрабатывает на 100%. Скачать здесь (550кб) Если какой-нибудь пример работает некорректно, сообищите. |
Сообщ.
#68
,
|
|
|
Ты только разложи бинарники и исходники отдельно, чтобы не мешать всё до кучи.
Проверю твои примеры в Dev-C++. Добавлено Пример getbkcolor_d.exe (DGML) выводит надпись на центрированную относительно экрана, а начинается вместо этого с центра экрана. Непорядок. Аналогично и getcolor_d.exe |
Сообщ.
#69
,
|
|
|
Цитата Romtek @ Пример getbkcolor_d.exe (DGML) выводит надпись на центрированную относительно экрана, а начинается вместо этого с центра экрана. Непорядок. Аналогично и getcolor_d.exe Надо надписи пока хоть как-то универсально реализовать, а потом уже со шрифтами париться... |
Сообщ.
#70
,
|
|
|
Компилирую исходники в Dev-C++.
arc.cpp - некорректная работа MoveTo? (прикреплённая картинка) getbkcolor.cpp - пустой экран и надписей не видать. getcolor.cpp - аналогично getfillpattern.cpp - не скомпилировался, выдаёт ошибку на строке getfillpattern(pattern); error: invalid conversion from `char*' to `char' Простой пример с выводом текста на экран тоже не работает - ничего не видно. Баги... Прикреплённый файлarc.PNG (0.54 Кбайт, скачиваний: 603) |
Сообщ.
#71
,
|
|
|
Romtek
А... Я ведь последн.. версию так и не выложил... Там arc работает. |
Сообщ.
#73
,
|
|
|
Такой пример не работает:
#ifdef __WIN32 #include "DGML_Init.h" #else #include <stdlib.h> #include <graphics.h> #include <conio.h> #include <stdio.h> #endif #include <string.h> int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int color, maxcolor, x, y; char colname[35]; char msg[80]; printf ("Color: %i", getcolor()); setcolor(1200); /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); /* an error occurred */ if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); /* terminate with an error code */ exit(1); } /* maximum color index supported */ maxcolor = getmaxcolor(); /* for centering text messages */ settextjustify(CENTER_TEXT, CENTER_TEXT); x = getmaxx() / 2; y = getmaxy() / 2; /* loop through the available colors */ for (color=1; color<=maxcolor; color++) { /* clear the screen */ cleardevice(); /* select a new background color */ setcolor(color); /* output a messsage */ sprintf(msg, "Color: %d", color); outtextxy(x, y, msg); getch(); } /* clean up */ closegraph(); return 0; } Добавлено Цитата Der_Meister @ Вот редиска! Я то проверял по версии 2.01! А... Я ведь последн.. версию так и не выложил... |
Сообщ.
#74
,
|
|
|
А почему не сделать эту либу кросс-платформенной, с помощью других известны либ?
SDL - http://www.libsdl.org Pixel Toaster - http://www.pixeltoaster.com/ ... Имхо, в таком случае, популярность DGML значительно возрастёт. |
Сообщ.
#75
,
|
|
|
Romtek
Насколько я помню в SDL простейший вывод пиксела выливается в манипуляцию с памятью... Ну это конечно решаемо, если более высокоуровневую обретку еще не выпустили... А более сепрьезная проблема - шрифты и заливки. Так что пока,я думаю, просто избавлюсь от большинства GDI-функций. (В частности заменить все ellipse, polygone, moveto одним setpixel) И в дальнейшем надо будем заменить лишь процедуру инициализации и несколько абстрактных функций. |