CS编辑器
主要介绍自己编写一个CS编辑器使用的技术
xuexiaodong2009
主要从事C#编程,精通SQL,JS,jquery等技术,目前主要从事内部办公,微信企业号方面的应用
展开
-
调用web服务上传文件
调用web服务上传文件原创 2023-01-31 15:02:09 · 317 阅读 · 0 评论 -
win7藏文打印部分文字乱码问题处理
藏文win7打印部分乱码原创 2022-03-18 10:15:09 · 1555 阅读 · 0 评论 -
获取纸张默认纸张特别慢的原因
因为使用打印机,经常会遇到设置纸张类型的的问题,但有时候,会发现简单的一行获取默认纸张类型的代码,竟然要好几秒,很夸张。核心的代码就一句string defaultPaperName = defaultPaperSize.PaperName;但时间却有点夸张。目前发现有两种原因,都和程序没有关系1 是网络打印机,这种打印机本来就慢,这一行代码也很慢,经常由于各种原因连接不上网络打印机,因此即使只有这一行代码也很慢2 应该是打印驱动有问题,在安装了新的虚拟打印机后,速度就明显很快了,个人.原创 2021-10-19 15:34:46 · 403 阅读 · 0 评论 -
调用HTTPS服务的问题
调用HTTPS的服务需要处理安全协议,如果不处理就会提示安全协议错误C#的处理代码如下 private static string ChangehttpsTohttp(string URL) { if (string.IsNullOrEmpty(URL)) { throw new Exception("hisURI错误,为=" + URL); } URL原创 2021-10-18 15:45:28 · 2324 阅读 · 0 评论 -
获取打印机硬边距异常
在项目上使用打印机,经常会出现获取打印机硬边距异常的情况 private string GetPageSettings() { string text = string.Empty; string PrinterName = printDocument.PrinterSettings.PrinterName; PageSettings printerSettings = printDocument.DefaultP原创 2021-09-28 17:11:24 · 536 阅读 · 0 评论 -
FTPS慢的问题
之前写过一些FTP的问题,但在公司的FTP修改为FTPS后,发现慢了很多,一直找不到原因。但没有测试环境,只能找其他人测试,后来发现,在FTP修改为FTPS后,创建FTP的目录一层目录就要将近10秒,好几层目录就将近一分钟,实在是有些夸张,只能搜索方案。一种方案说是request.Proxy = null;就可以,但测试似乎没有作用。 private static FtpWebRequest GetFtpWebRequest(FtpInfo info, string url, bool Keep.原创 2021-09-09 14:36:20 · 461 阅读 · 0 评论 -
测量指定字体的宽度问题
之前写过cs端根据字体计算文字所占位置的方法2,在实际使用中发现,使用Graphics的MeasureString方法方法测试出来的字符宽度有问题,字符串越长,偏差越大。后来发现和StringFormat有关系StringFormat.GenericDefault 使用这个计算出来的宽度偏大 private static SizeF MeasureTextForPrint(string text, Font font) { if (text == "")原创 2021-08-26 17:26:35 · 390 阅读 · 0 评论 -
实际打印纸张的横向设置不起作用的问题
在实际项目中,打印的纸张的默认一般都是纵向,但有一些是横向,但发现在一些很特殊的情况下,即使在打印之前设置了横向,但实际打印依然是纵向。目前发现这个问题有两个原因。1 是纸张名称不对,会导致横向设置不起作用。例如,设置为A4纸,但实际没有这种类型的纸张,或者有名称不一样,偶尔会导致即使设置了横向,但实际打印依然是纵向。也就是横向设置不起作用。 private PaperSize GetPaperSize(PrintDocument pDoc, string paperName, string原创 2020-09-04 10:02:14 · 4455 阅读 · 0 评论 -
打印预览通过滚动鼠标移动预览
打印预览时,希望滚动鼠标的滚轮,来实现类似拖动滚动条的功能。核心代码: PrintPreviewDialog PrnPreView = new PrintPreviewDialog(); PrnPreView.PrintPreviewControl.Zoom = 1; Type type = typeof(System.Windows.Forms.PrintPreviewControl);原创 2020-05-29 08:48:05 · 696 阅读 · 0 评论 -
打印预览TopMost问题
想要是打印预览始终居于最上边,发现有个问题,只要弹出了打印预览,结果连点击QQ都没有反映了,因为打印预览挡住了QQ的弹出框。于是修改如下,在打印预览有焦点时,TopMost=true,失去焦点时TopMost=false. PrintPreviewDialog PrnPreView = new PrintPreviewDialog(); PrnPreView.PrintPreviewControl.Zoom = 1; PrnPreVie原创 2020-05-29 08:43:14 · 448 阅读 · 0 评论 -
打印预览CA图片 一片空白
在处理打印,对方给我的是图片的Base64的字符串,但我发现,预览时有单模糊,于是按照打印图片模糊问题,进行了处理,发现问题更大,预览时,直接什么都没有了,并且后边的任何打印也都不显示了。但实际的打印是正常的。看来GIF图片确实有特殊的地方测试代码 private void PrintDocument1_PrintPage(object sender, System.Drawing.Pr...原创 2020-04-20 15:40:14 · 805 阅读 · 0 评论 -
打印图片模糊问题2
经过之前的处理打印图片模糊问题,但感觉还是有点模糊,在调试,发现还是有点模糊,于是在测试,发现Graphics对象就有缩放图片的方法。可以直接调用 public override void OnPaintForPrint(Graphics g, RectangleF ClipRectangle) { if (ClipRectangle.Intersec...原创 2020-04-20 13:09:21 · 755 阅读 · 1 评论 -
打印图片模糊问题
最近一直在处理打印的相关问题,有人提出来,打印出来的图片很模糊。然后自己就分析了一下,为什么打印出来的图片会很模糊。由于涉及到图片的缩放,图片的缩放代码如下,把先关的参数都设置为高质量 public static Bitmap ChangeImgSize(Image bit, int Width, int Height) { Bit...原创 2020-04-20 10:57:04 · 2743 阅读 · 0 评论 -
CS端编写拖动虚线框2
之前写过一篇关于拖动的虚线问题CS端编写拖动虚线框,但发现为最新版的win10系统中,始终都有问题。后来才发现是因为,系统问题。在win10系统中,获取到的宽度,高度都是原始的数据,如果控制面板中的缩放比例不是百分之百,需要自己缩放。只有是百分之百是才是正确的,原始的数据需要在乘以缩放比例才是正确的。辅助类public class PrimaryScreen ...原创 2019-12-24 09:58:54 · 380 阅读 · 0 评论 -
打印预览和实际的打印不一致问题
1打印预览和实际的打印的打印机不一致,打印预览使用的是系统自带的各种虚拟的打印机,但实际打印时却是实际的打印机。需要判断PrinterName是否一致System.Drawing.Printing.PrintDocument对象的 string PrinterName= printDocument.PrinterSettings.PrinterName;2打印预览和...原创 2019-12-17 14:05:25 · 15447 阅读 · 1 评论 -
winform打印预览注意事项
1硬边距预览时能获取到硬边距,但硬边距不起作用,但在实际打印时,硬边距内打印的任何文字线条是不打印的。获取硬边距的方法: private void PrintPage(object sender, PrintPageEventArgs ev) { Graphics g = ev.Graphics; bool Ha...原创 2019-09-23 16:04:59 · 983 阅读 · 0 评论 -
打印预览的线条粗细问题
在编写打印时,遇到一个很奇怪的问题,明明代码的线条宽度是一样的,但预览时,明显可以看到不一样。如果说是误差,但如果把宽度放大,误差也应该放大才对,但很奇怪,放大后,反倒一致了。开始以为是,其他的是其他的东西遮挡导致线条变细,后来直接把所有线条的坐标打印出来,重新只做了一个测试程序,发现使用winform渲染线条是没有差别的,但如果是打印预览,并且是百分之150的时候,很明显有差别。代码:...原创 2019-08-08 16:34:53 · 2757 阅读 · 0 评论 -
CS编辑器断行算法
问题:给定一段很长的文字,在指定宽度的区域内,如何把文字分成几行?最开始时,我是根据cs端根据字体计算文字所占位置的方法2中的方法,一个一个字符的累加,超过指定长度,就自动断开。这样比较简单,问题也很明显。主要问题有三个: 1某些特定符号号,问号,放在了一行的开头 2和1相对应的某些符号,前小括号(,前中括号,放在了一行的末尾 ...原创 2019-05-20 10:26:49 · 274 阅读 · 0 评论 -
cs端根据字体计算文字所占位置的方法2
之前写过一篇cs端根据字体计算文字所占位置的方法,后来发下,有部分结论是不正确的。关于三种测量方法测量出来的大小是不对的。第一种方法使用TextRenderer String text1 = "护理病历样板测试一护理病历 样 板 测 试 一护 理 病 历 样 板 测 试 一"; Font arialBold = new Font("宋体", 20.0F, G...原创 2019-05-09 16:23:25 · 404 阅读 · 0 评论 -
cs端根据字体计算文字所占位置的方法
方法1,这种方式测量的宽度和TextFormatFlags有一定关系 private static SizeF MeasureText(string text, System.Drawing.Font font) { Size proposedSize = new Size(0, 0); Size OneWordSize = ...原创 2018-08-14 09:14:55 · 427 阅读 · 0 评论 -
CS端编写拖动虚线框
显示效果如下:有两种方法,一种是使用传统的Graphics,另一种是使用在屏幕上划线的方式。 public static void DrawReversibleLine(Point start, Point end) { System.Windows.Forms.ControlPaint.DrawReversibleLine(start, en...原创 2018-08-14 11:49:27 · 538 阅读 · 0 评论 -
winfrom记录全局错误
在main函数中注册几个事件,记录下错误,便于排查错误。SetUnhandledExceptionModeThreadExceptionUnhandledException static class Program { private static Mutex singleton; /// /// 应用程序的主入口点。原创 2017-08-04 09:03:33 · 557 阅读 · 0 评论 -
winform只运行一个程序
核心是通过命名信号量Mutex来判断。在main函数启动时判断是否存在命名的信号量。没有则创建,有说明已经启动了。在程序关闭时,关闭命名信号量。判断是否存在命名的信号量 private static bool Check() { bool has = false; singleton = new Mutex(false, Assem原创 2017-08-04 09:09:39 · 563 阅读 · 0 评论