asp.net中如何获取Graphics的HDC

Brune 2007-08-18 12:43:39
我在page_load事件中
Bitmap bmp = Bitmap.FromFile(@"c:\\t.bmp");
Graphics g = g.FromImage(bmp);
IntPtr ptr = g.GetHdc()
最后一行代码报错,怎么才能获得hdc呢?
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2008-11-05
  • 打赏
  • 举报
回复
[DllImport("gdi32.dll", CharSet=CharSet.Auto, SetLastError=true, ExactSpelling=true)]
public static extern int BitBlt(HandleRef hDC, int x, int y, int nWidth, int nHeight, HandleRef hSrcDC, int xSrc, int ySrc, int dwRop);
参数中的各种DC可以用Graphics.GetHdc

Graphics gSave=Graphics.FromImage(bmp);
HandleRef hDcSave=new HandleRef(null,gSave.GetHdc()); //得到句柄

宝_爸 2008-11-03
  • 打赏
  • 举报
回复
Graphics g = g.FromImage(bmp);
这样创建的Graphics应该不还有hdc吧。
周公 2008-11-02
  • 打赏
  • 举报
回复
下面的代码示例设计用于 Windows 窗体,它需要 PaintEventArgse(这是 Paint 事件处理程序的参数)。该示例演示如何调用 Windows GDI 函数以执行与 GDI+Graphics 方法相同的任务。代码执行下列操作:

为 Windows DLL 文件 gdi32.dll 定义互操作性 DllImportAttribute 属性。此 DLL 包含所需的 GDI 函数。

将该 DLL 中的 Rectangle 函数定义为外部函数。

创建一支红色钢笔。

利用该钢笔,使用 GDI+DrawRectangle 方法将矩形绘制到屏幕。

定义内部指针类型变量 hdc 并将它的值设置为窗体的设备上下文句柄。

使用 GDIRectangle 函数将矩形绘制到屏幕。

释放由 hdc 参数表示的设备上下文。


public class GDI
{
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
internal static extern bool Rectangle(
IntPtr hdc,
int ulCornerX, int ulCornerY,
int lrCornerX, int lrCornerY);
}

[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand, Flags =
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
public void GetHdcForGDI1(PaintEventArgs e)
{

//实例化pen.
Pen redPen = new Pen(Color.Red, 1);

// 用GDI+绘制矩形.
e.Graphics.DrawRectangle(redPen, 10, 10, 100, 50);

//获取上下文handle.
IntPtr hdc = e.Graphics.GetHdc();

//用自定义GDI绘制矩形.
GDI.Rectangle(hdc, 10, 70, 110, 120);

//释放上下文handle.
e.Graphics.ReleaseHdc(hdc);
}
gcaling2006 2007-08-18
  • 打赏
  • 举报
回复
要引用system.drawing

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧