- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个控件,我想在表单和打印时以不同的方式绘制它。这是我做的方式:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Rectangle rect = myControl.ClientRectangle;
myControl.Render(e.Graphics, rect);
e.HasMorePages = false;
}
在渲染函数中
public void Render(Graphics g, Rectangle rect) {
DeviceCapTechnology dct = (DeviceCapTechnology)GetDeviceCaps(hDC, (int)DeviceCap.TECHNOLOGY);
if((dct & DeviceCapTechnoloy.DT_RASPRINTER) == DeviceCapTechnoloy.DT_RASPRINTER) {
//logic for print to printer
} else {
//normal logic
}
}
public enum DeviceCapTechnology
{
DT_PLOTTER = 0, //Vector plotter
DT_RASDISPLAY = 2, //Raster display
DT_RASPRINTER = 4, //Raster printer
DT_RASCAMERA = 6, //Raster camera
DT_CHARSTREAM = 8, //Character stream
DT_METAFILE = 10, //Metafile
DT_DISPFILE = 12 //Display file
}
但是当 PrintDocumentDialog 显示时,测试结果总是 DT_RASDISPLAY 而不是我期望的 DT_RASPRINTER。
那么正确的做法是什么?
谢谢
最佳答案
你的 DeviceCapTechnology 枚举是错误的
/* Device Technologies */
#define DT_PLOTTER 0 /* Vector plotter */
#define DT_RASDISPLAY 1 /* Raster display */
#define DT_RASPRINTER 2 /* Raster printer */
#define DT_RASCAMERA 3 /* Raster camera */
#define DT_CHARSTREAM 4 /* Character-stream, PLP */
#define DT_METAFILE 5 /* Metafile, VDM */
#define DT_DISPFILE 6 /* Display-file */
关于c# - GetDeviceCaps 技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1437073/
我正在尝试获取事件打印机的物理边距。但我不确定我应该为 GetDeviceCaps 函数的第二个参数提供什么值。有人可以告诉我我可以设置的 HORZSIZE 和 VERTSIZE 的值是什么,以获取实
我有一个控件,我想在表单和打印时以不同的方式绘制它。这是我做的方式: private void printDocument1_PrintPage(object sender, System.Drawi
我正在阅读 Programming Windows 5th edition。这本书告诉我 HORZSIZE=25.4*HORZRES/LOGPIXELSX。下图是我的结果: 如果用公式计算HORZSI
如何在 Windows10 中获取正确的屏幕尺寸来进行屏幕截图?它似乎得到了不正确的值(也许是 DPI 问题?) 即 // screenshot b := TBitmap.Create; DC :=
我所说的 Windows PC 显示器并不是指 Windows CE 或手持设备等。 澄清 下面的一些人误以为我在问显示器上的 DPI(每英寸点数)是多少。我要的是 GetCaps 中 LogPixe
我是一名优秀的程序员,十分优秀!