C#标签设计打印软件开发
1、新建自定义C#控件项目Custom

using System;
using System.Collections.Generic;
using System.Text;namespace CustomControls
{public class CommonSettings{/// <summary>/// 把像素换算成毫米/// </summary>/// <param name="Pixel">多少像素</param>/// <returns>多少毫米</returns>public static float PixelConvertMillimeter(float Pixel){return Pixel / 96 * 25.4f;}/// <summary>/// 把毫米换算成像素/// </summary>/// <param name="Millimeter">多少毫米</param>/// <returns>多少像素</returns>public static int MillimeterConvertPixel(float Millimeter){return ((int)(Millimeter / 25.4 * 96)+1);}}
}
GraphicsTools
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing.Drawing2D;
using System.Drawing;namespace CustomControls
{internal static class GraphicsTools{/// <summary>/// Creates a rounded rectangle from the specified rectangle and radius/// </summary>/// <param name="rectangle">Base rectangle</param>/// <param name="radius">Radius of the corners</param>/// <returns>Rounded rectangle as a GraphicsPath</returns>public static GraphicsPath CreateRoundRectangle(Rectangle rectangle, int radius){GraphicsPath path = new GraphicsPath();int l = rectangle.Left;int t = rectangle.Top;int w = rectangle.Width;int h = rectangle.Height;int d = radius << 1;path.AddArc(l, t, d, d, 180, 90); // topleftpath.AddLine(l + radius, t, l + w - radius, t); // toppath.AddArc(l + w - d, t, d, d, 270, 90); // toprightpath.AddLine(l + w, t + radius, l + w, t + h - radius); // rightpath.AddArc(l + w - d, t + h - d, d, d, 0, 90); // bottomrightpath.AddLine(l + w - radius, t + h, l + radius, t + h); // bottompath.AddArc(l, t + h - d, d, d, 90, 90); // bottomleftpath.AddLine(l, t + h - radius, l, t + radius); // leftpath.CloseFigure();return path;}/// <summary>/// Creates a rectangle rounded on the top/// </summary>/// <param name="rectangle">Base rectangle</param>/// <param name="radius">Radius of the top corners</param>/// <returns>Rounded rectangle (on top) as a GraphicsPath object</returns>public static GraphicsPath CreateTopRoundRectangle(Rectangle rectangle, int radius){GraphicsPath path = new GraphicsPath();int l = rectangle.Left;int t = rectangle.Top;int w = rectangle.Width;int h = rectangle.Height;int d = radius << 1;path.AddArc(l, t, d, d, 180, 90); // topleftpath.AddLine(l + radius, t, l + w - radius, t); // toppath.AddArc(l + w - d, t, d, d, 270, 90); // toprightpath.AddLine(l + w, t + radius, l + w, t + h); // rightpath.AddLine(l + w, t + h, l, t + h); // bottompath.AddLine(l, t + h, l, t + radius); // leftpath.CloseFigure();return path;}/// <summary>/// Creates a rectangle rounded on the bottom/// </summary>/// <param name="rectangle">Base rectangle</param>/// <param name="radius">Radius of the bottom corners</param>/// <returns>Rounded rectangle (on bottom) as a GraphicsPath object</returns>public static GraphicsPath CreateBottomRoundRectangle(Rectangle rectangle, int radius){GraphicsPath path = new GraphicsPath();int l = rectangle.Left;int t = rectangle.Top;int w = rectangle.Width;int h = rectangle.Height;int d = radius << 1;path.AddLine(l + radius, t, l + w - radius, t); // toppath.AddLine(l + w, t + radius, l + w, t + h - radius); // rightpath.AddArc(l + w - d, t + h - d, d, d, 0, 90); // bottomrightpath.AddLine(l + w - radius, t + h, l + radius, t + h); // bottompath.AddArc(l, t + h - d, d, d, 90, 90); // bottomleftpath.AddLine(l, t + h - radius, l, t + radius); // leftpath.CloseFigure();return path;}}
}
2、打印机设置界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing.Printing;
using System.Text;
using System.Windows.Forms;
using CustomControls.IO;namespace CustomControls.Control
{public partial class frmSetting : Form{public frmSetting(PrintConfig confg){InitializeComponent();pconfig = confg;}private PrintConfig pconfig;private void frmSetting_Load(object sender, EventArgs e){for (int i=0; i < PrinterSettings.InstalledPrinters.Count; i++){cbPrintName.Items.Add(PrinterSettings.InstalledPrinters[i]);}if (cbPrintName.Items.Count > 0){cbPrintName.SelectedItem = pconfig.PrintName;}numX.Value = pconfig.XOFFSET;numY.Value = pconfig.YOFFSET;numZoom.Value = (decimal)pconfig.ZOOM;numCopies.Value = pconfig.Copies;}private void btnClose_Click(object sender, EventArgs e){this.Close();}private void btnOk_Click(object sender, EventArgs e){pconfig.XOFFSET = (int)numX.Value;pconfig.YOFFSET = (int)numY.Value;pconfig.PrintName = cbPrintName.SelectedItem.ToString();pconfig.ZOOM = (float)numZoom.Value;pconfig.Copies = (int)numCopies.Value;this.Close();}}
}
3、条形码39码\93码实现
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace CustomControls.BarCode
{[Serializable]internal class Code39 : IBarcode{public Code39(){EncodeBarcodeValue();}#region Variable/// <summary>/// 是否显示条码的值/// </summary>private bool bShowText = true;/// <summary>/// 是否在条码上方显示字符/// </summary>private bool bShowTextOnTop = false;/// <summary>/// 条码值的对值的对齐方式/// </summary>private BarcodeTextAlign align = BarcodeTextAlign.Left;/// <summary>/// 条码的做图区域/// </summary>private Rectangle barcodeRect;/// <summary>/// 条码的值/// </summary>private String code = "0123456";/// <summary>/// 条码的高度/// </summary>private int height = 30;/// <summary>/// 条码的大小/// </summary>private BarCodeWeight weight = BarCodeWeight.Small;/// <summary>/// 旋转/// </summary>private BarcodeRotation Rotation = BarcodeRotation.Rotation90;/// <summary>/// 条码的字体/// </summary>private Font textFont = new Font("Courier", 8);/// <summary>/// 将条码数据编码/// </summary>private String encodedString = "";/// <summary>相关文章:
C#标签设计打印软件开发
1、新建自定义C#控件项目Custom using System; using System.Collections.Generic; using System.Text;namespace CustomControls {public class CommonSettings{/// <summary>/// 把像素换算成毫米/// </summary>/// <param name="Pixel">多少像素…...
Springboot+vue+小程序+基于微信小程序的在线学习平台
一、项目介绍 基于Spring BootVue小程序的在线学习平台从实际情况出发,结合当前年轻人的学习环境喜好来开发。基于Spring BootVue小程序的在线学习平台在语言上使用Java语言进行开发,在数据库存储方面使用的MySQL数据库,开发工具是IDEA。…...
正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-13-按键实验
前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...
ubuntu与redhat的不同之处
华子目录 什么是ubuntu概述 ubuntu版本简介桌面版服务器版 安装部署部署后的设置设置root密码关闭防火墙启用允许root进行ssh登录更改apt源安装所需软件 安装nginx安装apache网络配置Netplan概述配置详解配置文件DHCP静态IP设置设置 软件安装方法apt安装软件作用常用命令配置ap…...
三岁孩童被家养大型犬咬伤 额部撕脱伤达10公分
近期,一名被家养大型犬咬伤了面部的3岁小朋友,在被家人紧急送来西安国际医学中心医院,通过24小时急诊门诊简单救治后,转至整形外科,由主治医师李世龙为他实施了清创及缝合手术。 “患者额部撕脱伤面积约为10公分&…...
@click=“handleClick()“不会传递默认事件参数
当你使用click"handleClick()"这种形式绑定事件处理器时,Vue会将它视为一个函数调用,而不是一个事件监听器。在这种情况下,Vue不会自动传递原生事件对象作为默认参数。 如果你想让Vue自动传递原生事件对象作为默认参数,…...
KVM安装Ubuntu24.04简要坑点以及优点
本机环境是ubuntu22.04的环境,然后是8核16线程 ssd是500的 目前对于虚拟机的选择,感觉kvm确实会更加流畅,最重要的一点是简洁,然后实际安装效果也比较的好,如果对于速度方面希望快一点,并且流畅一点的话这…...
QT_day1
#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//修改窗口标题this->setWindowTitle("4.6.0");//修改窗口图标this->setWindowIcon(QIcon("C:\\Users\\zj\\Desktop\\yuanshen\\icon"));//修改窗口大小this…...
AWS宣布推出Amazon Q :针对商业数据和软件开发的生成性AI助手
亚马逊网络服务(AWS)近日宣布推出了一项名为“Amazon Q”的新服务,旨在帮助企业利用生成性人工智能(AI)技术,优化工作流程和提升业务效率。这一创新平台的推出,标志着企业工作方式的又一次重大变…...
C++:多继承虚继承
在C中,虚继承(Virtual Inheritance)是一种特殊的继承方式,用于解决菱形继承(Diamond Inheritance)问题。菱形继承指的是一个类同时继承自两个或更多个具有共同基类的类,从而导致了多个实例同一个…...
Linux进程间通信
每个进程的用户空间都是独立的,不能相互访问。 所有进程的内核空间(32位系统3G-4G)都是共享的 应用场景 作为缓冲区,处理速度不同的进程之间的数据传输资源共享:多个进程之间共享同样的资源,一个进程对共享数据的修改,…...
【二叉树算法题记录】222. 完全二叉树的节点个数
题目描述 给你一棵 完全二叉树 的根节点root ,求出该树的节点个数。 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位…...
每日新闻掌握【2024年5月6日 星期一】
2024年5月06日 星期一 农历三月廿八 大公司/大事件 多个品牌黄金优惠后价格重回600元/克以下 “五一”假期期间,记者走访调研黄金消费市场发现,受国际金价回落及“五一”假期促销等多重因素影响,终端黄金价格出现了较为明显的回落。包括周大…...
谈谈Tcpserver开启多线程并发处理遇到的问题!
最近在学习最基础的socket网络编程,在Tcpserver开启多线程并发处理时遇到了一些问题! 说明 在linux以及Windows的共享文件夹进行编写的,所以代码中有的部分使用 #ifdef WIN64 ... #else ... #endif 进入正题!!&…...
618好物节不知道买什么?快收下这份好物推荐指南!
随着618好物节的临近,你是否在为选择什么产品而犹豫不决?不用担忧,我精心准备了一份购物指南,旨在帮助你发现那些性价比高、口碑爆棚的商品。无论是科技新品还是生活小物件,这份指南都能帮你快速定位到那些值得投资的好…...
Django高级表单处理与验证实战
title: Django高级表单处理与验证实战 date: 2024/5/6 20:47:15 updated: 2024/5/6 20:47:15 categories: 后端开发 tags: Django表单验证逻辑模板渲染安全措施表单测试重定向管理最佳实践 引言: 在Web应用开发中,表单是用户与应用之间进行交互的重要…...
类和对象-Python-第一部分
初识对象 使用对象组织数据 class Student:nameNonegenderNonenationalityNonenative_placeNoneageNonestu_1Student()stu_1.name"林军杰" stu_1.gender"男" stu_1.nationality"中国" stu_1.native_place"山东" stu_1.age31print(stu…...
Pytorch实现图片异常检测
图片异常检测 异常检测指的是在正常的图片中找到异常的数据,由于无法通过规则进行识别判断,这样的应用场景通常都是需要人工进行识别,比如残次品的识别,图片异常识别模型的目标是可以代替或者辅助人工进行识别异常图片。 AnoGAN…...
【NOI-题解】1586. 扫地机器人1430 - 迷宫出口1434. 数池塘(四方向)1435. 数池塘(八方向)
文章目录 一、前言二、问题问题:1586 - 扫地机器人问题:1430 - 迷宫出口问题:1434. 数池塘(四方向)问题:1435. 数池塘(八方向) 三、感谢 一、前言 本章节主要对深搜基础题目进行讲解…...
探究MySQL行格式:解析DYNAMIC与COMPACT的异同
在MySQL中,行格式对于数据存储和检索起着至关重要的作用。MySQL提供了多种行格式,其中DYNAMIC和COMPACT是两种常见的行格式。 本文将深入探讨MySQL行格式DYNAMIC和COMPACT的区别,帮助读者更好地理解它们的特点和适用场景。 1. MySQL行格式简…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
