.netcf 图片区域拷贝[图片切割]
前言
关键字:.netcf BitBlt、图片区域拷贝、图片切割
接触Windows Mobile开发近一个月,陆陆续续有了一些小经验要和大家分享,希望对刚入门的朋友有所帮助 :)
正文
一、效果图
二、实现代码
const int SRCCOPY = 0x00CC0020;
/// <summary>
/// 拷贝图片的某一个区域,生成一个新图片
/// </summary>
/// <param name="bitSrc"></param>
/// <param name="rectDest"></param>
/// <returns></returns>
public static Bitmap CopyBitmap(Bitmap bitSrc, Rectangle rectDest)
{
Bitmap result = new Bitmap(rectDest.Width, rectDest.Height);
Graphics g1 = Graphics.FromImage(bitSrc);
Graphics g2 = Graphics.FromImage(result);
IntPtr hdc1 = g1.GetHdc();
IntPtr hdc2 = g2.GetHdc();
BitBlt(hdc2, 0, 0, rectDest.Width, rectDest.Height, hdc1, rectDest.X, rectDest.Y, SRCCOPY);
g1.ReleaseHdc(hdc1);
g2.ReleaseHdc(hdc2);
g1.Dispose();
g2.Dispose();
return result;
}
/// <summary>
/// 使用选定的刷子、源位图和ROP3码绘制选定的矩形
/// 获得屏幕图形并将它写入内存中的一个位图中(截屏)
/// </summary>
/// <param name="hdcDest">目的上下文设备的句柄 </param>
/// <param name="nXDest">目的图形的左上角的x坐标 </param>
/// <param name="nYDest">目的图形的左上角的y坐标 </param>
/// <param name="nWidth">目的图形的矩形宽度 </param>
/// <param name="nHeight">目的图形的矩形高度 </param>
/// <param name="hdcSrc">源上下文设备的句柄</param>
/// <param name="nXSrc">源图形的左上角的x坐标</param>
/// <param name="nYSrc">源图形的左上角的x坐标</param>
/// <param name="dwRop">光栅操作代码 </param>
/// <returns></returns>
[DllImport("CoreDLL.dll")]
public static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
/// <summary>
/// 拷贝图片的某一个区域,生成一个新图片
/// </summary>
/// <param name="bitSrc"></param>
/// <param name="rectDest"></param>
/// <returns></returns>
public static Bitmap CopyBitmap(Bitmap bitSrc, Rectangle rectDest)
{
Bitmap result = new Bitmap(rectDest.Width, rectDest.Height);
Graphics g1 = Graphics.FromImage(bitSrc);
Graphics g2 = Graphics.FromImage(result);
IntPtr hdc1 = g1.GetHdc();
IntPtr hdc2 = g2.GetHdc();
BitBlt(hdc2, 0, 0, rectDest.Width, rectDest.Height, hdc1, rectDest.X, rectDest.Y, SRCCOPY);
g1.ReleaseHdc(hdc1);
g2.ReleaseHdc(hdc2);
g1.Dispose();
g2.Dispose();
return result;
}
/// <summary>
/// 使用选定的刷子、源位图和ROP3码绘制选定的矩形
/// 获得屏幕图形并将它写入内存中的一个位图中(截屏)
/// </summary>
/// <param name="hdcDest">目的上下文设备的句柄 </param>
/// <param name="nXDest">目的图形的左上角的x坐标 </param>
/// <param name="nYDest">目的图形的左上角的y坐标 </param>
/// <param name="nWidth">目的图形的矩形宽度 </param>
/// <param name="nHeight">目的图形的矩形高度 </param>
/// <param name="hdcSrc">源上下文设备的句柄</param>
/// <param name="nXSrc">源图形的左上角的x坐标</param>
/// <param name="nYSrc">源图形的左上角的x坐标</param>
/// <param name="dwRop">光栅操作代码 </param>
/// <returns></returns>
[DllImport("CoreDLL.dll")]
public static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
三、下载
结束语
由于接触时间有限,做起项目来比较吃力,手里可打的牌不多,还需要再积累积累,再坚持坚持,做上几个项目就会好很多的:)
分类:
Windows Mobile
, 6、C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!