社区
图形处理/算法
帖子详情
非托管VC++.net使用GDI+时如何调用LockBits!
seatree
2008-04-23 05:45:05
如题,已经搞定在vc++.net中使用GDI+
但是访问像素就要靠lockbits,现在遇到的问题就是C#中lockbits很好调用,不知VC++.net中如何调用,最好有调用的源代码
...全文
148
7
打赏
收藏
非托管VC++.net使用GDI+时如何调用LockBits!
如题,已经搞定在vc++.net中使用GDI+ 但是访问像素就要靠lockbits,现在遇到的问题就是C#中lockbits很好调用,不知VC++.net中如何调用,最好有调用的源代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meiZiNick
2008-05-01
打赏
举报
回复
支持搂主,收藏
蒋晟
2008-04-25
打赏
举报
回复
Bitmap是从Image派生出来的,可以直接传指针
seatree
2008-04-24
打赏
举报
回复
bitmap是有这个方法,但是graphics类的drawimage方法不支持bitmap,只支持image类型,不知如何把bitmap类型转换过去
蒋晟
2008-04-24
打赏
举报
回复
http://msdn2.microsoft.com/en-us/library/ms536291(VS.85).aspx
seatree
2008-04-24
打赏
举报
回复
而且很奇怪GDI+里面的image没有fromHbitmap方法,有的话一下就解决了
seatree
2008-04-24
打赏
举报
回复
就剩下唯一的问题了,经这样处理的bitmap如何显示处理,GDI+的graphics只有drawimage,不知怎么显示!
菜牛
2008-04-23
打赏
举报
回复
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
INT main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Bitmap* bitmap = new Bitmap(L"LockBitsTest1.bmp");
BitmapData* bitmapData = new BitmapData;
Rect rect(20, 30, 5, 3);
// Lock a 5x3 rectangular portion of the bitmap for reading.
bitmap->LockBits(
&rect,
ImageLockModeRead,
PixelFormat32bppARGB,
bitmapData);
printf("The stride is %d.\n\n", bitmapData->Stride);
// Display the hexadecimal value of each pixel in the 5x3 rectangle.
UINT* pixels = (UINT*)bitmapData->Scan0;
for(UINT row = 0; row < 3; ++row)
{
for(UINT col = 0; col < 5; ++col)
{
printf("%x\n", pixels[row * bitmapData->Stride / 4 + col]);
}
printf("- - - - - - - - - - \n");
}
bitmap->UnlockBits(bitmapData);
delete bitmapData;
delete bitmap;
GdiplusShutdown(gdiplusToken);
return 0;
}
不好意思,MSDN上的。
Bitmap
调用
Lock
Bits
[C#]
本文详细介绍了如何
使用
GDI+
中的 Bitmap.
Lock
Bits
方法来读取和修改位图数据。通过锁定位图的一部分并提供临
时
缓冲区,可以以指定格式读写像素数据。文章还展示了
使用
C# 实现的示例代码。
GDI高速图像绘制
本文探讨了如何在没有高性能显卡的情况下,通过优化GDI位图操作以提高
.Net
程序中图像绘制的速度。主要方法包括直接操纵Bitmap的
Lock
Bits
进行数据复制,以及自定义填充矩形颜色,从而避免
使用
Graphics.DrawImage()和Graphics.FillRectangle()导致的性能瓶颈。通过这些技巧,图像处理速度可以提升200%以上。
位图
Lock
Bits
作用
Lock
Bits
是Windows
GDI+
或
.NET
图像处理常用方法,用于高效访问和修改位图像素数据。它避免了逐像素操作的低效方式,适用于高性能图像处理场景。该方法将位图像素数据锁定到系统内存,允许直接读写,比传统方法快几十甚至上百倍。
GDI+
类模块
使用
教程全面解析与实战
本文系统解析
GDI+
核心类Graphics、Pen、Brush、Bitmap的
使用
方法,涵盖绘图上下文管理、高质量渲染、双缓冲机制、图像处理与DrawImage高级绘制技术。通过代码示例和流程图,深入讲解抗锯齿、渐变填充、离屏绘制、资源管理和性能优化等关键技术,适用于Windows平台图形界面开发。
发生在 ToSystemBitmap 方法中,具体在
调用
skBitmap.GetPixels() 或 Bitmap.
Lock
Bits
后的内存操作
本文聚焦于
.NET
8.0 Windows Forms应用中ToSystemBitmap方法引发的AccessViolationException问题,根因在于SKBitmap.GetPixels()返回IntPtr被提前释放、Bitmap.
Lock
Bits
跨步/格式不匹配及多线程资源竞争。提出采用SKImage.FromBitmap→Encode(PNG)→MemoryStream→Bitmap的安全转换路径,规避底层内存操作;辅以
lock
同步、Strict Dispose、
GDI+
句柄管控与快照健壮性增强(FileShare.ReadWrite、大小校验、重试日志),保障10MB/s高吞吐超声数据采集下的图像转换稳定性。
图形处理/算法
19,465
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章