c# 使用打印机打印并设置打印位置及宽高
1.在界面中使用自带的控件printDocument
2.将以下函数绑定到控件的PrintPage事件
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
try
{
if (CurrtPrintImage != null)//此处是打印一个图像,CurrtPrintImage是Image类型
{
float x;
float y;
float width;
float height;
switch (comboBox1.Text)//此处此页共可打印多少个图像
{
case "8"://总个数为8
string location = comboBox2.Text;//此处是将当前图像打印到此页的哪个位置。
if (Convert.ToInt32(location) % 2 != 0) //奇数1,3,5,7
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 4.0f - printDocument1.DefaultPageSettings.PaperSize.Height / 8 + 20;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 4.0f) * (Convert.ToInt32(location) / 2);
}
else //偶数2,4,6,8
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 4.0f * 3 - printDocument1.DefaultPageSettings.PaperSize.Height / 8 - 20;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 4.0f) * (Convert.ToInt32(location) / 2 - 1);
}
width = printDocument1.DefaultPageSettings.PaperSize.Height / 4.0f;
height = printDocument1.DefaultPageSettings.PaperSize.Height / 4.0f;
e.Graphics.DrawImage(CurrtPrintImage, x, y, width, height);
break;
case "6":
location = comboBox2.Text;
if (Convert.ToInt32(location) % 2 != 0) //奇数1,3,5
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 4f - printDocument1.DefaultPageSettings.PaperSize.Height / 8 - 40;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 3f) * (Convert.ToInt32(location) / 2);
}
else //偶数2,4,6
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 4f * 3 - printDocument1.DefaultPageSettings.PaperSize.Height / 8 - 55;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 3f) * (Convert.ToInt32(location) / 2 - 1);
}
width = printDocument1.DefaultPageSettings.PaperSize.Height / 3f;
height = printDocument1.DefaultPageSettings.PaperSize.Height / 3f;
e.Graphics.DrawImage(CurrtPrintImage, x, y, width, height);
break;
case "4":
location = comboBox2.Text;
if (Convert.ToInt32(location) % 2 != 0) //奇数1,3
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 4f - printDocument1.DefaultPageSettings.PaperSize.Height / 8 - 70;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 2f) * (Convert.ToInt32(location) / 2) + 70 + ((location == "1" || location == "2") ? 30 : -30);
}
else //偶数2,4
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 4f * 3 - printDocument1.DefaultPageSettings.PaperSize.Height / 8 - 70;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 2f) * (Convert.ToInt32(location) / 2 - 1) + 70 + ((location == "1" || location == "2") ? 30 : -30);
}
width = printDocument1.DefaultPageSettings.PaperSize.Height / 2.7f;
height = printDocument1.DefaultPageSettings.PaperSize.Height / 2.7f;
e.Graphics.DrawImage(CurrtPrintImage, x, y, width, height);
break;
case "2":
location = comboBox2.Text;
if (Convert.ToInt32(location) % 2 != 0) //奇数1
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 2f - printDocument1.DefaultPageSettings.PaperSize.Height / 4;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 2f) * (Convert.ToInt32(location) - 1);
}
else //偶数2
{
x = printDocument1.DefaultPageSettings.PaperSize.Width / 2f - printDocument1.DefaultPageSettings.PaperSize.Height / 4;
y = (printDocument1.DefaultPageSettings.PaperSize.Height / 2f) * (Convert.ToInt32(location) - 1);
}
width = printDocument1.DefaultPageSettings.PaperSize.Height / 2f;
height = printDocument1.DefaultPageSettings.PaperSize.Height / 2f;
e.Graphics.DrawImage(CurrtPrintImage, x, y, width, height);
break;
}
}
}
catch (Exception exception)
{
}
}
private void Print(){
if (comboBox1.SelectedIndex < 0 || comboBox2.SelectedIndex < 0)
{
MessageBox.Show("请选择打印的版数以及位置");
return;
}
printDocument1.DocumentName = "示例图像";
printDocument1.PrinterSettings.PrinterName = "示例打印机名称";
foreach (System.Drawing.Printing.PaperSize item in printDocument1.PrinterSettings.PaperSizes)
{
if (item.PaperName=="A4")
{
printDocument1.DefaultPageSettings.PaperSize = item;
printDocument1.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0); //设置边距
break;
}
}
printDocument1.Print();//开始打印
}
c# 使用打印机打印并设置打印位置及宽高的更多相关文章
- android PercentRelativeLayout 支持百分比来设置控件的宽高
Android 最终官方支持按百分比来设置控件的宽高了. 我们先来看看效果: 看一下布局: PercentRelativeLayout <android.support.percen ...
- 如何设置a标签的宽高,如何使a标签的文字垂直居中
通常情况下a标签是没有宽高的,设置 width 和 height 没有作用. 若要使用 width 和 height,需要把a标签转为块级元素,即:display:block|inline-block ...
- 如何设置html中img宽高相同-css
最近项目中有一个问题,做一个响应式的盒子,随着屏幕的变化, 宽高一直保持相等,之前一直使用js动态设置,获取盒子的宽度来设置盒子高度. 但是加载时样式显示不是很好,后来直接用css实现. html部分 ...
- 为什么canvas宽高要设置在标签内>>宽高设置在style和设置在canvas的区别
一直很困惑为什么canvas标签和其他标签不一样,宽高需要设置在canvas标签里,设置在style里就会有问题. 纯粹个人理解,有错误欢迎指出. > 结论写在头 设置在style里有问题其实是 ...
- (转)详解JS位置、宽高属性之一:offset系列
很多初学者对于JavaScript中的offset.scroll.client一直弄不明白,虽然网上到处都可以看一张图(图1),但这张图太多太杂,并且由于浏览器差异性,图示也不完全正确. 图一 不知道 ...
- 设置Editext的光标宽高与颜色
在Editext的布局属性上加上 android:textCursorDrawable="@drawable/cursor_shape" cursor_shape如下: <? ...
- JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决
设置: document.getElementById('id').style.width=value document.getElementById('id').style.height=va ...
- 学习微信小程序之css12设置盒子内容的宽高
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android 终于官方支持按百分比来设置控件的宽高了
dependencies { compile 'com.android.support:percent:22.2.0' } 支持布局 PercentRelativeLayout <android ...
- LODOP纸张/打印机/份数/打印方向/双面打印 简短问答
纸张#如何设置纸张纸张设置,参考样例5 http://www.c-lodop.com/demolist/PrintSample5.html纸张的一些优先级 http://www.c-lodop.com ...
随机推荐
- 这样看C函数才对
什么是函数?从定义来看,函数就是一段可以重复使用的代码块,比如下面这样 void hanshu() { int a = 0; int b = 3; } 这时候就应该有人要跳出来了,这是什么**!确实, ...
- clickhouse使用入门
转载请注明出处(- ̄▽ ̄)-严禁用于商业目的的转载- 导语:同学,你也不想你根本不懂ClickHouse,却赶鸭子上架使用的事情被其他人知道吧? 写在前面:本文旨在让原先有一定SQL基础的人快速简单了 ...
- 创建 Code Interpreter Demo: 一次实践的探索
好消息,好消息,Code Interpreter可以测试使用了!!! 在这篇文章中,我们将探索如何创建一个 Code Interpreter Demo.提交一个2023年1-5月份的融资记录数据,让它 ...
- .Net8的AOT引导程序BootStrap
前言 .Net8的本地预编机器码AOT,它几乎进行了100%的自举.微软为了摆脱C++的钳制,做了很多努力.也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等.而需要C++做的,也就仅仅是引 ...
- 2023ccpc大学生程序设计竞赛-zx
这次ccpc整体来说做题做的比较卡,第一个签到都wa了,后面几道中档题全都是至少wa一次才能过,这导致我们不仅罚时增加也导致需要大量时间修改代码,还有一个G题很可惜,当时只注意到B过题多所以有点被带歪 ...
- Variable 'xxxx' is accessed from within inner class, needs to be final or effectively final-Lambda 表达式的变量与作用域
问题的原因 问题代码: public static void main(String[] args) { Integer sum = 0; Integer count = 0; List<Int ...
- 洛谷 T356695 文字处理软件(重置版)
很简单了啊! 说普及- 我都不信 作者(也就是我)链接:https://www.luogu.com.cn/problem/T356695 好好想想!!!! 题目! 文字处理软件(重置版) 题目背景 A ...
- 给C#新增一个时间类型: YearMonth
在.Net Framework中,我们常用的时间类型是DateTime.直到.Net6微软加入了两个新的时间类型:DateOnly和TimeOnly,才弥补了之前的不足. DateOnly:表示仅日期 ...
- linux 脚本:iptables-secure.sh
#!/bin/bash # 2022.2.28 by dewan # secutiry configuration. usage () { echo "$0 start # setup se ...
- .NET 如何实现ChatGPT的Stream传输
.NET 如何实现ChatGPT的Stream传输 ChatGPT是如何实现不适用websocket进行一个一个字返回到前端的? 下面我们会介绍一下EventSource EventSource Ev ...