Click here to Skip to main content
15,899,825 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: help me write a program Pin
Rick York27-Jan-17 5:05
mveRick York27-Jan-17 5:05 
GeneralRe: help me write a program Pin
Richard MacCutchan27-Jan-17 6:15
mveRichard MacCutchan27-Jan-17 6:15 
GeneralRe: help me write a program Pin
Rick York27-Jan-17 8:24
mveRick York27-Jan-17 8:24 
GeneralRe: help me write a program Pin
Richard MacCutchan27-Jan-17 8:41
mveRichard MacCutchan27-Jan-17 8:41 
GeneralRe: help me write a program Pin
Member 1296870329-Jan-17 5:08
Member 1296870329-Jan-17 5:08 
GeneralRe: help me write a program Pin
Richard MacCutchan29-Jan-17 5:51
mveRichard MacCutchan29-Jan-17 5:51 
SuggestionRe: help me write a program Pin
David Crow30-Jan-17 2:19
David Crow30-Jan-17 2:19 
AnswerRe: help me write a program Pin
Patrice T28-Jan-17 13:10
mvePatrice T28-Jan-17 13:10 
Questionhow do i write this program? Pin
Member 1296870326-Jan-17 0:03
Member 1296870326-Jan-17 0:03 
AnswerRe: how do i write this program? Pin
Jochen Arndt26-Jan-17 0:29
professionalJochen Arndt26-Jan-17 0:29 
GeneralRe: how do i write this program? Pin
Stefan_Lang26-Jan-17 19:58
Stefan_Lang26-Jan-17 19:58 
AnswerRe: how do i write this program? Pin
Patrice T28-Jan-17 13:15
mvePatrice T28-Jan-17 13:15 
QuestionPerformance issue when drawing on MFC Pin
Member 162132325-Jan-17 10:59
Member 162132325-Jan-17 10:59 
AnswerRe: Performance issue when drawing on MFC Pin
leon de boer25-Jan-17 18:25
leon de boer25-Jan-17 18:25 
GeneralRe: Performance issue when drawing on MFC Pin
Member 162132326-Jan-17 10:28
Member 162132326-Jan-17 10:28 
GeneralRe: Performance issue when drawing on MFC Pin
leon de boer26-Jan-17 17:50
leon de boer26-Jan-17 17:50 
Questionfree memory when constructor throw exception Pin
john563219-Jan-17 17:49
john563219-Jan-17 17:49 
AnswerRe: free memory when constructor throw exception Pin
rxantos19-Jan-17 19:05
rxantos19-Jan-17 19:05 
AnswerRe: free memory when constructor throw exception Pin
«_Superman_»19-Jan-17 19:32
professional«_Superman_»19-Jan-17 19:32 
AnswerRe: free memory when constructor throw exception Pin
Albert Holguin20-Jan-17 10:14
professionalAlbert Holguin20-Jan-17 10:14 
QuestionSend data to POS Printer by USB Pin
Member 1286002219-Jan-17 16:10
Member 1286002219-Jan-17 16:10 
AnswerRe: Send data to POS Printer by USB Pin
«_Superman_»19-Jan-17 19:48
professional«_Superman_»19-Jan-17 19:48 
SuggestionRe: Send data to POS Printer by USB Pin
David Crow20-Jan-17 3:15
David Crow20-Jan-17 3:15 
QuestionLight weight solution for distrubted memory map Pin
Member 380393118-Jan-17 16:12
Member 380393118-Jan-17 16:12 
QuestionGdiplus: DrawImage not working Pin
Member 162132314-Jan-17 3:28
Member 162132314-Jan-17 3:28 
Hi all,

I need some help from you: I try to render an SVG image on the screen (with alpha channel). The problem is, when I try to draw the image on the screen, I see absolutely nothing.
First of all, my SVG image is loaded correctly, and the ATL CImage from the below code, contains a correct image. The problem start when I try to use Gdiplus + alpha channel.
For instance, if I use PixelFormat24bppRGB instead of PixelFormat32bppARGB, the image is drawn correctly, but alpha channel is not preserved - a black halo is shown around my image.
Do you see any problem in my code?

PS: I use Win7, 32 bit + Visual Studio 2013 Ultimate.

Many thanks!

C++
void CAppView::OnDraw(CDC* pDC)
{

	int width = 600, height = 600;

	GError* pError = NULL;

	rsvg_init();
	g_my_svg = rsvg_handle_new_from_file("d:\\myImage.svg", &pError);
	rsvg_handle_get_dimensions(g_my_svg, &g_dimension);


	cairo_surface_t *surface = cairo_win32_surface_create_with_dib(CAIRO_FORMAT_ARGB32, width, height);
	cairo_t* cr = cairo_create(surface);

	rsvg_handle_render_cairo(g_my_svg, cr);

	HDC srcHDC = cairo_win32_surface_get_dc(surface);

	// Create ATL CImage, then, copy the content of srcHDC in the CImage HDC
	CImage image;
	image.Create(width, height, 32);

	HDC imageHDC = image.GetDC();

	TransparentBlt(imageHDC, 0, 0, width, height, srcHDC, 0, 0, width, height, RGB(0, 0, 0));


	// Initialize Gdiplus
	Gdiplus::GdiplusStartupInput gdiplusStartupInput;
	ULONG_PTR gdiplusToken;
	Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

// Problems starts from this point.

	// Create a Gdiplus bitmap, and copy the content of CImage in bitmap, then write the bitmap on the screen.
	Gdiplus::Bitmap bmp(image.GetWidth(), image.GetHeight(), image.GetPitch(), PixelFormat32bppARGB, static_cast<BYTE*>(image.GetBits()));
	Gdiplus::Graphics graphics(pDC->GetSafeHdc());
	graphics.DrawImage(&bmp, Gdiplus::Rect(0, 0, width, height));



	Gdiplus::GdiplusShutdown(gdiplusToken);
	image.ReleaseDC();
	image.Destroy();
	cairo_surface_flush(surface);
	cairo_destroy(cr);
	cairo_surface_destroy(surface);
}

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.