Форум программистов, компьютерный форум CyberForum.ru

Компиляция серьезной графики под Mingw - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать функцию, которая вычисляет объём и площадь поверхности цилиндра. Входными данными являются радиус цилиндра и его высота http://www.cyberforum.ru/cpp-beginners/thread766179.html
Написать функцию, которая вычисляет объём и площадь поверхности цилиндра. Входными данными являются радиус цилиндра и его высота
C++ Определить, становится ли симметричной (относительно главной диагонали) заданная матрица после замены на число 0 каждого локального максимума. Локальн Определить, становится ли симметричной (относительно главной диагонали) заданная матрица после замены на число 0 каждого локального максимума. Локальный максимум – это максимальный элемент строки. http://www.cyberforum.ru/cpp-beginners/thread766177.html
C++ Найти непрерывный участок из 10 элементов, сумма которых максимальна
Найти непрерывный участок из 10 элементов, сумма которых максимальна. Если размерность массива 200, а диапазон значений от 0 до 100.
Как создать объект в новой куче? C++
VisualStudio 2012, Win7x64Prof. Пробую выделить память в куче, а потом с помощью формы "Placement new" разместить в ней объект. class MyClass { public: int x; MyClass()
C++ Дано целое число и найти его сумму http://www.cyberforum.ru/cpp-beginners/thread766153.html
Дано целое число N(>0).Hайти сумму N*2+(N+1)*2+(N+2)*2+...+(N*2)*2 Небольшая заготовка #include <vcl.h> #include <conio.h> #include <iostream.h> int main() { int N;
C++ вывести на печать случайный массив или матрицу как вывести на печать случайный массив или матрицу на Visual Studio? тоесть как сгенерировать массив/матрицу? подробнее

Показать сообщение отдельно
SeaMonster
 Аватар для SeaMonster
15 / 15 / 0
Регистрация: 31.12.2012
Сообщений: 101
20.01.2013, 02:29  [ТС]     Компиляция серьезной графики под Mingw
Цитата Сообщение от Somebody Посмотреть сообщение
Весь код покажи. GdiplusStartup не забыл?
Ты телепат! Именно "забыл", точнее даже не знал, что надо... Поискал про него и всё в первом приближении заработало.
Вот мой пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<stdio.h>
#include<math.h>
#include<ctype.h>
 
#include <gdiplus.h>
#include<wchar.h>
 
#include <conio.h>
 
#include<windows.h>
/// Разные типичные инклуды
 
#include<Graphics.h>
//// Привычная мне библиотека поддержки кое-какой графики
 
int main(){
int gdriver=DETECT,gmode=0,errorcode;
initgraph(&gdriver,&gmode,"");
//// Оккрытие кое-какой графики на весь экран
 
{
Gdiplus::GdiplusStartupInput gdiplusStartupInput; 
ULONG_PTR gdiplusToken; 
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
}  /// Как умею - инициализирую gdi+
 
 
wchar_t buffer4[100];
 
printf("\nbuff");wprintf(buffer4);;getch();
buffer4[0]='1'; buffer4[1]='.';buffer4[2]='j';buffer4[3]='p';buffer4[4]='g';buffer4[5]=0;
printf("\n buff");wprintf(buffer4);;getch();
//// Вручную создаю строку с именем файла в нужном формате, который принимает компилятор
Gdiplus::Graphics graphics(txDC()); //// Выставляю gdi работу с hdc экрана
printf("\nYstanovili hdc ekrana");getch();
Gdiplus::Image* m_pImage=NULL;
printf("\n Start Gdiplus::Image");getch();
//////////////////m_pImage=
///////return 0;
m_pImage=new Gdiplus::Image(buffer4);
printf("\n Gdiplus::Image ne pozis!");getch();
if(m_pImage==NULL){printf("\n NIFIGA NE ONKRILI!!!!");getch();}else{printf("OTKRILI KOE-KAK fail");getch();}
 
Gdiplus::Rect rc(100,100,200,200); //// Создаем рамку
graphics.DrawImage(                m_pImage,                        // [in] Gdiplus::Image object
                rc                                // [in] Position and dimensions
                );
/////Вывод картинки в рамку!
getch();
}
У меня он работает, если скомпилировать строкой g++ test_jpg.cpp -lgdiplus -static

Еще раз всем спасибо, я с Вашей помощью очень здорово продвинулся, но пока считать освоенным мешает бага. В части случаев (примерно явно меньше половины, но наверно больше 10 процентов) программа не срабатывает, т.е. картинку не показывает. В большинстве случаев показывает, но такая нестабильная работа - не дело

Добавлено через 2 часа 33 минуты
Через *** временно решил проблему, повторяя процедуру 100 раз циклом, тогда безусловно открывается. Но это не дело (совершенно бестолковые тормоза плюс неизвестная ошибка может и в другом месте позже всплыть...)

Добавлено через 46 минут
На интуиции решил попробовать выводить не сразу на экран, а на специально созданный hdc. Немного поглючило, но когда для этой в общем простой манипуляции все параметры правильно написал - заработало как часы!

Видимо дело вот в чем. Я это не совсем понимаю, но в виндовской графики перед выводом на экран чего-либо низкоуровневыми функциями надо его сначала в каком-то смысле "запереть" а потом "открыть". Если же я этого не делал, то половину рисовало как надо, половину не рисовало....
Видимо gdi+ и извратная Graphics.h эмулирующая bgi через winapi в этой части не состыкуются.
 
Текущее время: 22:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru