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行格式简…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...