位图

VC GDI双缓冲机制绘图防屏幕闪烁实现步骤

≡放荡痞女 提交于 2020-01-15 00:01:17
在OnDraw(CDC* pDC) 中添加如下代码 CDC MemDC; //首先定义一个显示设备对象   CBitmap MemBitmap;//定义一个位图对象   //随后建立与屏幕显示兼容的内存显示设备   MemDC.CreateCompatibleDC(NULL);   //这时还不能绘图,因为没有地方画 ^_^   //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上)   MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);   //将位图选入到内存显示设备中   //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上   CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);   //先用背景色将位图清除干净,这里我用的是白色作为背景   //你也可以用自己应该用的颜色   MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));   //绘图   MemDC.MoveTo(……);   MemDC.LineTo(……);   //将内存中的图拷贝到屏幕上进行显示   pDC-

静态加载位图

孤街浪徒 提交于 2020-01-13 21:40:16
图形控件Picture Control在对话框上添加图片 增加位图资源 选择Picture Control Type属性属性-- Bitmap Image属性选择导入的位图IDB_BITMAP1 编译 编译报错: error RC2108: expected numerical dialog constant 解决方法: 双击error RC2108…打开文件; 增加“Static”, SS_BITMAP即可。 来源: CSDN 作者: qq_36633275 链接: https://blog.csdn.net/qq_36633275/article/details/103960841

WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

☆樱花仙子☆ 提交于 2020-01-13 10:09:12
WPF 渲染框架并没有对外提供多少可以完全控制渲染的部分,目前可以做的有: D3DImage,用来承载使用 DirectX 各个版本渲染内容的控件 WriteableBitmap,通过一段内存空间来指定如何渲染一个位图的图片 HwndHost,通过承载一个子窗口以便能叠加任何种类渲染的控件 本文将解释如何最大程度压榨 WriteableBitmap 在 WPF 下的性能。 本文内容 如何使用 WriteableBitmap 启用不安全代码 启用帧率测试 4K 脏区 小脏区 无脏区 不渲染 脏区大小与 CPU 占用率之间的关系 启用基准测试(Benchmark) 使用 `CopyMemory` 拷贝内存 使用 `MoveMemory` 移动内存 使用 `Buffer.MemoryCopy` 拷贝内存 自己写 for 循环 基准测试数据 结论和使用建议 WriteableBitmap 渲染原理 如何使用 WriteableBitmap 创建一个新的 WPF 项目,然后我们在 MainWindow.xaml 中编写一点可以用来显示 WriteableBitmap 的代码: < Window x: Class = " Walterlv.Demo.HighPerformanceBitmap.MainWindow " xmlns = " http://schemas.microsoft.com

Bitmap 位图 Java实现

£可爱£侵袭症+ 提交于 2020-01-11 09:15:32
一、结构思想 以 bit 作为存储单位进行 0、1存取的数据结构。 可用作布尔值存取,比如给定第i位,该bit为1则表示true,为0则表示false。 二、使用场景及优点 适用于对布尔或0、1值进行(大量)存取的场景。 如:记录一个用户365天的签到记录,签了为true,没签为false。若是以普通key/value数据结构,每个用户都需要记录365条,当用户量很大时会造成巨大的空间开销。 因此运用位图的话,每天签到记录只占1个位(bit),一共就365位,则只需48个字节就能容纳一个用户一年的签到记录。 优点 : 低空间开销且高效的0、1存取方案 三、具体实现 实现源码: https://github.com/SimpleIto/data_structure/blob/master/src/bitmap/Bitmap.java 主要考虑以下问题: 用什么物理结构存储一系列bit? 如何通过位操作高效的实现对指定bit的获取、修改操作?(而不是通过字符串转去转来臃肿的实现) 解决思路: Java中,使用 byte[] 字节数组来存储bit。 1 byte = 8 bit 对于获取操作 思路:拿到目标bit所在的byte后,将其向右位移(并将高位置0),使目标bit在第一位,这样结果值就是目标bit值。 1) 通过 byte[index >> 3] (等价于byte[index/8

C#创建不规则窗体四种方式 01

谁说我不能喝 提交于 2020-01-10 23:48:27
现在,C#创建不规则窗体不是一件难事,下面总结一下:    一、自定义窗体,一般为规则的图形,如圆、椭圆等。 做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下: System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath(); shape.AddEllipse( 0 , 0 ,this.Height, this.Width); this.Region = new Region(shape);   做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下:   即重绘窗体的规则。    二、利用背景图片实现   1. 设置窗体的背景图片,其中背景图片是24位(不包括24)以下的位图(BMP图片),并且要设置TansparencyKey的值,一般为你背景图片的背景色,即创建不规则图片时的底色,一般设为你图片中没有的颜色。   这种做法的不好的地方就是背景图片一定要16位或者更低的,而且还要确保客户端的显示。如果监视器的颜色深度设置大于 24 位,则不管 TransparencyKey 属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于

一起谈.NET技术,C#创建不规则窗体的几种方式

不问归期 提交于 2020-01-10 23:48:02
现在, C# 创建不规则窗体不是一件难事,下面总结一下 : 一、 自定义窗体,一般为规则的图形,如圆、椭圆等。 做法:重写 Form1_Paint 事件( Form1 是窗体的名字),最简单的一种情况如下: System.Drawing.Drawing2D. GraphicsPath shape = new System.Drawing.Drawing2D. GraphicsPath (); shape.AddEllipse(0,0, this .Height, this .Width); this .Region = new Region (shape); 即重绘窗体的规则。 二、利用背景图片实现 1. 设置窗体的背景图片,其中背景图片是 24 位(不包括 24 )以下的位图( BMP 图片),并且要设置 TansparencyKey 的值,一般为你背景图片的背景色,即创建不规则图片时的底色,一般设为你图片中没有的颜色。 这种做法的不好的地方就是背景图片一定要 16 位或者更低的,而且还要确保客户端的显示。如果监视器的颜色深度设置大于 24 位,则不管 TransparencyKey 属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于 24 位。当开发具有这种透明功能的应用程序时

C#创建不规则窗体的3种方式详解

对着背影说爱祢 提交于 2020-01-10 23:47:34
现在,C#创建不规则窗体不是一件难事,下面总结一下: 一、自定义窗体 一般为规则的图形,如圆、椭圆等。 做法: 重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下: System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath(); shape.AddEllipse(0,0, this .Height, this .Width); this .Region = new Region(shape); 即重绘窗体的规则。 二、利用背景图片实现 1. 设置窗体的背景图片,其中背景图片是24位(不包括24)以下的位图(BMP图片),并且要设置TansparencyKey的值,一般为你背景图片的背景色,即创建不规则图片时的底色,一般设为你图片中没有的颜色。 这种做法的不好的地方就是背景图片一定要16位或者更低的,而且还要确保客户端的显示。如果监视器的颜色深度设置大于 24 位,则不管 TransparencyKey 属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于 24 位。当开发具有这种透明功能的应用程序时,请牢记应使您的用户意识到此问题。 实现步骤 如下: 1.

CreateDIBitmap与CreateDIBSection的区别(转)

廉价感情. 提交于 2020-01-07 05:51:48
https://www.cnblogs.com/staring-hxs/archive/2013/08/17/3264896.html 最主要区别 : CreateDIBitmap 创建的是 设备相关 位图句柄 CreateDIBSection 创建的是 设备无关 位图句柄 CreateDIBSection 创建的是一个 DIBSECTION 结构, CreateDIBitmap 创建的是 BITMAP 结构。 来源: https://www.cnblogs.com/merlinzjl/p/12154474.html

Bitmap.createScaledBitmap 失真

天涯浪子 提交于 2020-01-07 01:31:10
1.问题:就算换了小图标失真 selectedBitmap = Bitmap.createScaledBitmap(selectedBitmap, (int) pieceWidth, (int) pieceWidth, true); unSelectedBitmap = Bitmap.createScaledBitmap(unSelectedBitmap, (int) pieceWidth, (int) pieceWidth, true); selectedBitmapSmall = Bitmap.createScaledBitmap(selectedBitmapSmall, (int) pieceWidthSmall, (int) pieceWidthSmall, true); unSelectedBitmapSmall = Bitmap.createScaledBitmap(unSelectedBitmapSmall, (int) pieceWidthSmall, (int) pieceWidthSmall, true); 2.解决: boolean---->true public static Bitmap createScaledBitmap(@NonNull Bitmap src, int dstWidth, int dstHeight, boolean filter)

WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

旧巷老猫 提交于 2020-01-07 01:07:34
原文: WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例 WPF 渲染框架并没有对外提供多少可以完全控制渲染的部分,目前可以做的有: D3DImage,用来承载使用 DirectX 各个版本渲染内容的控件 WriteableBitmap,通过一段内存空间来指定如何渲染一个位图的图片 HwndHost,通过承载一个子窗口以便能叠加任何种类渲染的控件 本文将解释如何最大程度压榨 WriteableBitmap 在 WPF 下的性能。 本文内容 如何使用 WriteableBitmap 启用不安全代码 启用帧率测试 4K 脏区 小脏区 无脏区 不渲染 脏区大小与 CPU 占用率之间的关系 启用基准测试(Benchmark) 使用 `CopyMemory` 拷贝内存 使用 `MoveMemory` 移动内存 使用 `Buffer.MemoryCopy` 拷贝内存 自己写 for 循环 基准测试数据 结论和使用建议 WriteableBitmap 渲染原理 如何使用 WriteableBitmap 创建一个新的 WPF 项目,然后我们在 MainWindow.xaml 中编写一点可以用来显示 WriteableBitmap 的代码: <Window x:Class="Walterlv.Demo.HighPerformanceBitmap.MainWindow"