取消禁用WPF中默认的平滑抗锯齿

编程小计——消除Graphics图像边缘颜色不纯(抗锯齿) 在很多时候,我们都要绘制纯色的图片,而用Graphics生成的往往是不纯的,尤其是绘制文字时。比如说绘制纯红色文字,往往R达不到255。 C#中默认抗锯齿,给人看起来柔和;但是我们现实中往往用到锯齿。 C#中可以通过下面的方法解决 Image bit = new Bitmap(400, 400); Graphics g = Graphics.FromImage(bit); ... 阅读详情

在很多时候,我们都要绘制纯色的图片,而用Graphics生成的往往是不纯的,尤其是绘制文字时。比如说绘制纯红色文字,往往R达不到255。

C#中默认抗锯齿,给人看起来柔和;但是我们现实中往往用到锯齿。

C#中可以通过下面的方法解决

复制代码
Image bit = new Bitmap(400, 400);
Graphics g = Graphics.FromImage(bit);
//加上这句
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
g.Clear(pictureBox1.BackColor);
g.DrawString("黄色", new Font("宋体", 24), Brushes.Yellow, 0, 0);
g.DrawString("红色", new Font("宋体", 24), Brushes.Red, 0, 32);
复制代码

wpf中用DrawingVisual绘图消除颜色不纯方法

  1. 显示非文本锯齿
    复制代码
    public class AliasedDrawingVisual : DrawingVisual
            {
                public AliasedDrawingVisual()
                {
                    this.VisualEdgeMode = EdgeMode.Aliased;
                }
            }
    复制代码

    继承DrawingVisual,修改VisualEdgeMode = EdgeMode.Aliased

  2. 显示文本锯齿
    复制代码
    AliasedDrawingVisual drawingVisual = new AliasedDrawingVisual();
    DrawingContext drawingContext = drawingVisual.RenderOpen();
    FormattedText formattedText = new FormattedText(
                        "测试文本锯齿",
                        CultureInfo.GetCultureInfo("zh-cn"),
                        FlowDirection.LeftToRight, new Typeface("SimSun"),
                        24,
                        new SolidColorBrush(Color.FromRgb(255, 0, 0)),null,TextFormattingMode.Display);//TextFormattingMode.Display消除文本锯齿
    drawingContext.DrawText(formattedText, new Point((544 - 8 * 24) / 2, 0));
    drawingContext.DrawRectangle(null, new Pen(Brushes.Red, 1), new Rect(4, 52, 134 * 2, 19));
    复制代码

    实例化FormattedText时,传入TextFormattingMode.Display即可显示锯齿

Windform C# Graphics绘图,消除锯齿 Graphics g = CreateGraphics(); g.SmoothingMode = SmoothingMode.AntiAlias; //使绘图质量最高,即消除锯齿 g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.CompositingQuality = CompositingQuality.HighQuality; 阅读详情

相关推荐

[Computer Graphics]3 光栅化与抗锯齿

在进入具体的直线光栅化以及三角形光栅化算法之前,我们首先需要知道光栅化是一个什么样的过程。简单来说光栅化的目的就是将,因为我们的物体其实都是一个个顶点数据来表示的,如何表这些蕴含几何信息的数据转化为屏幕上的像素就是光栅化所考虑的东西。比如说一条直线,究竟该用哪些像素点去逼近它,一个三角形,又用哪些像素集合表示它,这都是光栅化的过程。本节主要讨论介绍两个直线光栅化和一个三角形光栅化算法。

Uni__Lee的博客 553

基于 Script Block Logging 检测 PowerShell Empire C2 痕迹:Anthropic-Cybersecurity-Skills 事件日志分析实战指南

PowerShell Empire 是一款典型的后渗透框架,由监听器(Listener)、Stager 与 Agent 组成,其在 Windows 主机上落地时几乎必然留下可被事件日志捕获的痕迹。本指南以 Anthropic-Cybersecurity-Skills 仓库中的 `analyzing-powershell-empire-artifacts` 技能为核心,系统讲解如何利用 PowerS

gitblog_00713的博客 245

C# Graphics 文字的不同渲染效果

通过Graphics添加文字时,不同设置的实际渲染效果实验。TextRenderingHint, TextContrast

Angelo的博客 1032

交互式3D全息标识:从原理到实践,打造沉浸式公共信息展示方案

空间成像与交互技术正推动信息展示方式的革新。其核心原理在于利用光学反射或视觉暂留,在空中生成悬浮的三维影像,并结合计算机视觉实现精准的隔空交互。这项技术的价值在于,它能将复杂信息以直观、立体的方式呈现,极大提升信息传递的效率和用户的参与度与记忆度。在工程实践中,这涉及显示方案选型、交互逻辑设计、系统集成与现场调优等多个环节。例如,通过深度相机进行手部骨骼追踪和坐标映射,是实现稳定、精准空中触控的关键。其应用场景广泛,涵盖数字标牌、智慧零售、博物馆展陈及公共导览等领域。本文将以一个具体的交互式3D全息信息标识

weixin_30564901的博客 355

C# WinForm高频数据可视化:ScottPlot 5实时绘图性能优化实战

在工业上位机、数据采集和监控系统中,实时数据可视化是核心技术需求,其核心挑战在于平衡数据刷新率与内存管理。通过生产者-消费者模型,将数据采集与UI渲染解耦,利用线程安全队列缓冲数据流,再结合定时器控制渲染节奏,可有效解决高频数据下的界面卡顿问题。滑动窗口机制通过动态维护固定大小的数据集,避免了内存无限增长,保障了长时间运行的稳定性。在C# WinForm开发中,ScottPlot 5作为高性能绘图库,配合合理的架构设计,能够实现流畅的实时曲线显示,适用于传感器监控、金融行情等需要高频数据可视化的应用场景。

weixin_33937778的博客 386

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 399

关于WPF画图性能问题

最近用wpf画心电图,尝试了wpf所有的方法,性能依然不能满足要求,后来发现舍本逐末了,现在记录下来,以免以后再走弯路。 首先要明白wpf管理的机制,如果你往canvas画一条线,一般就是 new Line() 然后添加到canvas里面,这样做的话就算你用轻量级的Polyline,或者使用DrawingVisual的方法。对于高频数据来说(比如心电波形)都会很卡,这里面使用inkcanva

Creak_Phone的专栏 2310

笔记6:字体

字体对象。有属性:字型、字体大小、字体样式等。 重要:创建的字体对象后,其属性为只读。因此创建时须考虑好。 FontFamily 字体家庭成员 这是什么意思? 把字体相似的一些字体归纳到一个大家庭中,即集合中FontFamilies。 那么其中的每一个字体就是其中的成员。 为什么产生这个? 当程序传到另一处时,别处无对应字体时,就应用另一个家庭成员的字体来代替,故又称后备字体

白话魔法师 1906

C#画图消除锯齿

using (Graphics g = this.CreateGraphics()) { g.SmoothingMode = SmoothingMode.HighQuality; //图片柔顺模式选择 g.InterpolationMode = InterpolationMode.HighQualityBic...

weixin_33938733的博客 1709

Graphics2d消除锯齿整理

Graphics2d拥有比graphics更为强大的画图方法 所以在画图时,我们要使用的画笔是Graphics2D。 但是,Graphics2D直接拿来画,效果是一样的,还是有锯齿(原因:像素太小导致)。 所以我们要对它设置各种呈现算法。 设置呈现算法语句: BufferedImage img=new BufferedImage(什么什么什么); Graphics2D g2 = i

李金振的专栏 1万+

使用GDI+绘制高质量图和字体

对于GDI+,在正常的操作,Bitmap-- Graphcis -- DrawImage或者DrawString ,生成图片的话,会产生很多杂点,或者是图片质量不稳定..尤其是在读取图片后,生成缩略图之后,文件会被压缩而失真..主要原因是因为没有重新设置Graphics的几个属性..1.Graphics.SmoothingMode属性: 例如SmoothingMode.HighQuality可以产...

weixin_34390996的博客 686

[C#] Graphics.DrawImage 图像质量变差

[C#] Graphics.DrawImage 处理图象,图像质量变差

webgis_kf的专栏 1万+

C# Graphics中有关绘图质量的几个Mode

  一、CompositingMode 获取一个值,该值指定如何将合成图像绘制到此 Graphics。复合模式确定从源映像的像素是覆盖(SourceCopy)还是组合(SourceOver, 需要使用半透明、混合叠加效果时使用)使用背景像素。默认值为 SourceOver。 该属性适用于 适用于.NET Framework 4.7.2, 4.7.1, 4.7, 4.6.2, 4.6.1, 4...

weixin_34416649的博客 1371

c#图像处理入门(-bitmap类和图像像素值获取方法)

一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. ...

hududumo 1933

低像素Bitmap圆形头像实现边缘锐化

问题 在项目中从存储设备中读取出的低像素Bitmap(圆形头像,在实现圆形切割的时候出现边缘模糊的情况,在尝试普通的圆形头像实现方法的过程中,发现平时使用的圆形头像方法并不生效,觉得可能是因为画布拉伸,所以在拉伸的画布上面进行绘制Circle的时候得到的也是低像素的圆形 下面是平时使用的画原型头像的方法: public class Demo01Activity extends AppCompa...

DLUT_WJX的博客 761

C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)

C#图像处理 (各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)   一、各种旋转、改变大小 注意:先要添加画图相关的using引用。 //向右旋转图像90°代码如下: private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Gr

蓝叶菱的专栏 3462
上一篇: XMLConfig
下一篇: WPF 使用Microsoft.Ink 做的墨迹输入法
SlimTracy
博客等级 码龄15年 26粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值