VB 打印预览 锯齿

本来是用的Printer对象往打印机上打印,我想把Printer换为Picutre然后可以实现预览问题是把一张高清的A4图片打到Picture上很不清楚!唉!谁有办法把锯... 本来是用的 Printer对象 往打印机上打印,我想把Printer 换为Picutre 然后 可以实现预览

问题是把一张 高清的 A4图片打到Picture上 很不清楚! 唉! 谁有办法 把锯齿给消除掉?
展开
 我来答
恬然且谦虚的小才子Q
2011-01-26 · TA获得超过1361个赞
知道小有建树答主
回答量:933
采纳率:0%
帮助的人:413万
展开全部
直接抓窗体控件的图,然后发送到打印机.
[DllImport("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, //目标设备句柄
int nXDest, //目标对象左上角的X坐标
int nYDest, //目标对象左上角的Y坐标
int nWidth, //目标对象矩形宽度
int nHeight, //目标对象矩形高度
IntPtr hdcSrc, //源设备句柄
int nXSrc, //源对象的左上角X坐标
int nYSrc, //源对象的左上角Y坐标
System.Int32 dwRop //光栅的操作值
);

/// <summary>
/// 抓取指定控件图片
/// </summary>
/// <param name="control">指定控件</param>
/// <returns>返回Image对象</returns>
private Bitmap GetImg(Control control)
{
//创建显示器DC
try
{
IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null);
Graphics g1 = Graphics.FromHdc(dc1);
Bitmap bitmap = new Bitmap(control.Width, control.Height);
Graphics g2 = Graphics.FromImage(bitmap);

IntPtr dc3 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
Point pt = control.PointToScreen(control.Location);
pt.X -= control.Location.X;
pt.Y -= control.Location.Y;
BitBlt(dc2, 0, 0, control.ClientSize.Width, control.ClientSize.Height, dc3, pt.X, pt.Y, 13369376);
g1.ReleaseHdc(dc3);
g2.ReleaseHdc(dc2);
return bitmap;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式