C#如何消除绘制图形缩放时抖动,总结

一、手动双缓冲

首先定义一个BitmapBitmap backBuffer = new Bitmap(画布宽度, 画布高度);然后获取这个Bitmap的GraphicsGraphics graphics = Graphics.FromImage(backBuffer);然后在这个graphics上进行绘图graphics.Clean(Color.Black);

当所有绘图完成之后,将这个Bitmap再绘制到窗口的画布上,注意不要清理窗口的画布:windowGraphics.DrawImage(backBuffer, 0, 0, backBuffer.Width, backBuffer.Height);

以上步骤做到的是手动的双缓冲,在GDI+中使用双缓冲效率会非常的慢,所以如果要求效率的话则不推荐使用GDI+。

二、其它方案

2.1  高清缩放

g.InterpolationMode = InterpolationMode.HighQualityBicubic

不过会慢点的...建议重写那些函数,在处理完之后再统一刷新...

g.PixelOffsetMode = PixelOffsetMode.HighQuality; 这个是高清缩放

2.2 开启双缓冲

this.DoubleBuffered = true;可以看一下这方面的知识

参考博文1.  C#如何消除绘制图形缩放时抖动

时间: 2024-12-07 08:45:09

C#如何消除绘制图形缩放时抖动,总结的相关文章

OpenGL学习进程(4)第二课:绘制图形

本节是OpenGL学习的第二个课时,下面介绍如何用点和线来绘制图形:     (1)用点的坐标来绘制矩形: #include <GL/glut.h> void display(void) { // clear all pixels glClear(GL_COLOR_BUFFER_BIT); // draw yellow polygon (rectangle) with corners at glColor3f(1.0, 1.0, 0.0); glBegin(GL_POLYGON); //绘制开

绘制播放音乐时的音波图形的View

这个效果类似于这个哦: 效果如下: 源码: MusicView.h 与 MusicView.m // // MusicView.h // Music // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h> @interface MusicView : UIView @property (nonatomic, assign) CGFloat progress; // 进程百分比,取值为[0,1]

微信小程序开发—(八)canvas绘制图形

一.小知识 (1).API接口 (2).context 对象的方法列表 二.步骤 wxml中: <canvas canvas-id="myCanvas" class="myCanvas" ></canvas> 在js文件onLoad: function() {}的方法中开始编写代码 1.创建一个 Canvas 绘图上下文 CanvasContext const ctx = wx.createCanvasContext('myCanvas')

使用canvas来绘制图形

一个简单例子 一开始,让我们来看个简单的例子,我们绘制了两个有趣的长方形,其中的一个有着alpha透明度. 我们将在接下来的例子里深入探索一下这是如何工作的. <html> <head> <script type="application/javascript"> function draw() { var canvas = document.getElementById("canvas"); if (canvas.getCont

canvas 绘制图形

什么是canvas? <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形. 方法属性 颜色.样式和阴影 属性 描述 fillStyle 设置或返回用于填充绘画的颜色.渐变或模式. strokeStyle 设置或返回用于笔触的颜色.渐变或模式. shadowColor 设置或返回用于阴影的颜色. shadowBlur 设置或返回用于阴影的模糊级别. shadowOffsetX 设置或返回

【UWP通用应用开发】编辑文本、绘制图形、3D透视效果及绘制时钟实战

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

Windows App开发之编辑文本与绘制图形

编辑文本及键盘输入 相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码

图片缩放时java.lang.IllegalArgumentException: pointerIndex out of range

06-03 20:45:24.143: E/AndroidRuntime(1230): FATAL EXCEPTION: main 06-03 20:45:24.143: E/AndroidRuntime(1230): java.lang.IllegalArgumentException: pointerIndex out of range 06-03 20:45:24.143: E/AndroidRuntime(1230): at android.view.MotionEvent.native

绘制图形

1. 绘制图形,则需要找到合适的绘制图形的函数. 绘制圆弧 arc(x, y, radius, startAngle, endAngle, anticlockwise) 该方法有五个参数: x,y为绘制圆弧所在圆上的圆心坐标.radius为半径.startAngle以及engAngle参数用弧度定义了开始以及结束的弧度.这些都是以x 轴为基准.参数anticlockwise 为一个布尔值.为true时,是逆时针方向,否则顺时针方向.