疑问一:在下要打印的“Panel”控件的大小为:160*221的,但是当点击打印时弹出“打印预览窗口”。但是“Panel”的内容出现在“打印纸张”的左上角,很小一块。怎样,也就是修改这个打印类的参数可以让“Panel”的内容填满整个纸张界面?疑问二:这个截图打印类的实现思路是怎样的?
也就是怎样截的图?怎样打印的图?又怎样生成的打印预览界面,还有那么多的按钮?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;namespace tsleyyg.panelPrint
{
class panelPrint
{
private static Bitmap mBitmap = null;
private static System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument(); public static void PrintPanel(Panel p)
{
PrintPreviewDialog ppvw;
Graphics mygraphics = p.CreateGraphics();
Size s = p.Size;
mBitmap = new Bitmap(s.Width,s.Height,mygraphics);
Graphics memoryGraphics = Graphics.FromImage(mBitmap); IntPtr dc1 = mygraphics.GetHdc();
IntPtr dc2 = memoryGraphics.GetHdc(); BitBlt(dc2,0,0,p.ClientRectangle.Width,p.ClientRectangle.Height,dc1,0,0,13369376);
mygraphics.ReleaseHdc(dc1);
memoryGraphics.ReleaseHdc(dc2); ppvw = new PrintPreviewDialog();
ppvw.Width = 160;
ppvw.Height = 221;
ppvw.Document = printDoc;
printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
if (ppvw.ShowDialog() != DialogResult.OK)
{
printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
return;
} printDoc.Print();
} [System.Runtime.InteropServices.DllImport("gdi32.dll")]
private static extern long BitBlt(IntPtr HDest, int nXDest, int nYDest, int nWidth, int hHeight, IntPtr Hsrc, int nXSrc, int nYSrc, int DwRop); private static void PrintDoc_PrintPage(Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(mBitmap,0,0);
}
}
}
也就是怎样截的图?怎样打印的图?又怎样生成的打印预览界面,还有那么多的按钮?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;namespace tsleyyg.panelPrint
{
class panelPrint
{
private static Bitmap mBitmap = null;
private static System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument(); public static void PrintPanel(Panel p)
{
PrintPreviewDialog ppvw;
Graphics mygraphics = p.CreateGraphics();
Size s = p.Size;
mBitmap = new Bitmap(s.Width,s.Height,mygraphics);
Graphics memoryGraphics = Graphics.FromImage(mBitmap); IntPtr dc1 = mygraphics.GetHdc();
IntPtr dc2 = memoryGraphics.GetHdc(); BitBlt(dc2,0,0,p.ClientRectangle.Width,p.ClientRectangle.Height,dc1,0,0,13369376);
mygraphics.ReleaseHdc(dc1);
memoryGraphics.ReleaseHdc(dc2); ppvw = new PrintPreviewDialog();
ppvw.Width = 160;
ppvw.Height = 221;
ppvw.Document = printDoc;
printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
if (ppvw.ShowDialog() != DialogResult.OK)
{
printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
return;
} printDoc.Print();
} [System.Runtime.InteropServices.DllImport("gdi32.dll")]
private static extern long BitBlt(IntPtr HDest, int nXDest, int nYDest, int nWidth, int hHeight, IntPtr Hsrc, int nXSrc, int nYSrc, int DwRop); private static void PrintDoc_PrintPage(Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(mBitmap,0,0);
}
}
}
解决方案 »
- 请问下这软件界面的的这图标是button控件做的吗?
- 窗体2中有个PictureBOX1 窗体3中有一个Button1,这两个状体都在同一个解决方案之下。如何用窗体3中Button1控制窗体2中PictureBOX
- 如何用c# 编程查询当前电脑的C:盘有没有设置共享
- 新手100求助,急~~~~~~~~~~~~~~~~~,望大家帮忙
- ==很奇怪的问题:为何win7下Vs2010编译的exe文件很大==
- 数据库表的操作
- 请问如何要部署WINDOWS程序时,在注册册中加入程序的安装路径值.
- winform中datagridview相关
- SQL的存储过程问题,高手请~~~~~~~
- 请高手们帮忙攻关好么?
- C#解析Xml 高手帮忙!
- 多线程里使用委托的问题(listview控件显示),C#环境
2、生成image打印的?