I made a console app in windows and linux with wxMemoryDC.
when I run my sample app, In Windows, No Problem
but In Linux I saw this err Message.
Code: Select all
(process:7670): Gdk-CRITICAL **: gdk_screen_get_width: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_height: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_width_mm: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_height_mm: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_width: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_height: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_width_mm: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_height_mm: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
(process:7670): Gdk-CRITICAL **: gdk_cairo_create: assertion 'GDK_IS_WINDOW (window)' failed
(process:7670): Gdk-CRITICAL **: gdk_window_get_width: assertion 'GDK_IS_WINDOW (window)' failed
(process:7670): Gdk-CRITICAL **: gdk_window_get_height: assertion 'GDK_IS_WINDOW (window)' failed
(process:7670): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(process:7670): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(process:7670): Gtk-ERROR **: Can't create a GtkStyleContext without a display connection
Trace/breakpoint trap (core dumped)
I don't know how to fix.
Give me a tip Please
Thank you in advance
this is a my sample code.
Code: Select all
#include <wx/wx.h>
#include <iostream>
using namespace std;
void Paint(const char *pszFilePath);
int main(int argc, char **argv)
{
wxInitializer initializer;
if (!initializer)
{
fprintf(stderr, "Failed to initialize the wxWidgets library, aborting.");
return -1;
}
wxInitAllImageHandlers();
Paint("D:/test2.png"); // Windows
//Paint("/home/test/test2.png"); // Linux
cout << "OK" << endl;
return 0;
}
void Paint(const char *pszFilePath)
{
wxMemoryDC wMemDC;
wxBitmap wBitmap(256, 256);
wMemDC.SelectObject(wBitmap);
wMemDC.SetBackground(*wxYELLOW_BRUSH);
wMemDC.Clear();
wxBitmap bitmap(40, 40);
//bitmap.UseAlpha();
wxMemoryDC imagememDC;
imagememDC.SelectObject(bitmap);
imagememDC.SetBackground(*wxWHITE_BRUSH);
imagememDC.Clear();
//imagememDC.SetBrush(*wxTRANSPARENT_BRUSH);
imagememDC.SetPen(*wxRED_PEN);
imagememDC.DrawRectangle(wxRect(0, 0, 20, 20));
imagememDC.SelectObject(wxNullBitmap);
wxBrush brush;
brush.SetStyle(wxBRUSHSTYLE_STIPPLE_MASK);
brush.SetStipple(bitmap);
brush.SetColour(*wxWHITE);
wxBitmap drawing(110, 110);
imagememDC.SelectObject(drawing);
imagememDC.SetPen(*wxGREEN_PEN);
imagememDC.SetBrush(brush);
imagememDC.DrawRectangle(wxRect(10, 10, 100, 100));
wxBitmap drawingMask(110, 110);
imagememDC.SelectObject(drawingMask);
imagememDC.Clear();
imagememDC.DrawRectangle(wxRect(10, 10, 100, 100));
imagememDC.SelectObject(wxNullBitmap);
drawing.SetMask(new wxMask(drawingMask, *wxWHITE));
wMemDC.DrawBitmap(drawing, 10, 10, true);
wMemDC.SetPen(wxNullPen);
wMemDC.SetBrush(wxNullBrush);
wMemDC.SelectObject(wxNullBitmap);
wBitmap.SaveFile(pszFilePath, wxBITMAP_TYPE_PNG);
}