Problem with drawing on B&w or Gray TIFF using GDI+
Problem with GDI+ in Visual C++ 6.0
Hello there,
I'm using Visual C++ 6 with Platform SDK and trying to create a imaging program. The program is simple, where i the user can draw lines on a TIFF image.
I'm using GDI+ for this purpose, but having one problem. The problem is that GDI+ just cannot draw on gray(8-bit)/black & white TIFF images or BMP for that matter. I dont know why. A simple test code is given below,
void CGDIPlusDlg::OnButton8()
{
//gets current DC
CDC *pDC=this->GetDC();
//gets Handle to DC
HDC hdc=pDC->GetSafeHdc();
//Opens an image from disk
Image img(L"c:\\mspaint.tif");
//target rectangle at coordinate 0,0 sizwe
RectF r(0, 0, 100, 100);
//Set graphics, and dest
Graphics gr(hdc);
RectF destRect(0, 0, 100, 100);
//Draw original image-works fine
gr.DrawImage(&img,destRect);
//Create a blackpen (A,b,g,r), thickness 3
Pen blackPen(Color(255, 0, 0, 0), 3);
//Start and end point
PointF point1(0, 0);
PointF point2(100.0f, 100.0f);
//Draw line on image---doesnt work for BW images!!
Graphics gr2(&img);
gr2.DrawLine(&blackPen,point1,point2);
RectF destRect2(100, 0, 100, 100);
gr.DrawImage(&img,destRect2);
}
The image is created using MSPaint. Create a 100x100 image, draw something, and save as TIF. Save again by changing the image depth to black & white from the Image->Attributes menu.
The program supposed to draw a diagonal line across the image, but it doest for the black&white version of tif.
So, my problem is how to overcome this? Or, how can i programmatically convert a BW TIFF to color and work on it using GDI+?
Oh yeah, can anyone try if this code works fine in C# or managed C++?
Thanks,
Usman