Greetings everyone. I try to print my own control (combination of labels and textfields). I use DrawToBitmap() method but it gives bad quality in result.
I tried to override it (with better quality as i thought):
private void DrawToBitmapEx(Bitmap bitmap, Rectangle targetBounds)
{
int width = Math.Min(this.Width, targetBounds.Width);
int height = Math.Min(this.Height, targetBounds.Height);
Bitmap image = new Bitmap(width, height, bitmap.PixelFormat);
using (Graphics graphics = Graphics.FromImage(image))
{
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
IntPtr hdc = graphics.GetHdc();
UnsafeNativeMethods.SendMessage( (IntPtr)(new HandleRef(this, this.Handle)), 0x317, hdc, (IntPtr)30);
using (Graphics graphics2 = Graphics.FromImage(bitmap))
{
graphics2.SmoothingMode = SmoothingMode.HighQuality;
graphics2.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
graphics2.CompositingQuality = CompositingQuality.HighQuality;
graphics2.InterpolationMode = InterpolationMode.HighQualityBicubic;
IntPtr handle = graphics2.GetHdc();
SafeNativeMethods.BitBlt( (IntPtr)(new HandleRef(graphics2, handle)), targetBounds.X, targetBounds.Y, width, height, (IntPtr)(new HandleRef(graphics, hdc)), 0, 0, 0xcc0020);
graphics2.ReleaseHdcInternal(handle);
}
graphics.ReleaseHdcInternal(hdc);
}
}
but nothing changed. I see pixels on paper. Is there any way to solve this problem? Thnx.