第一次用vc++,出随便一张emf图片,急,在线等,高手赐教

xiaochongwei 2008-07-14 06:57:11
对于常用vc的人来说,出一张emf这可能是个小事,但我第一次用vc++(vs 2003)
做起来相当郁闷,而用java做,没有现成jdk里面东西可以用,要做N个class(freehep)
客户现在不给那么多钱,而且只想用vc做。
妈的,抠了一天就出来下面这些东西,但是只能出个emf文件,文件大小是0k,里面没有内容,
为什么啊!!!!!!!说的详细点,我对vc的语法,实在是不懂啊!

#include "stdafx.h"
using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;
using namespace System::Runtime::InteropServices;
#using <mscorlib.dll>

[DllImport("user32.dll")] extern Int32 GetDC(IntPtr);
[DllImport("user32.dll")] extern Int32 ReleaseDC(IntPtr, IntPtr);

int _tmain()
{
// DC的取得
IntPtr hDC = GetDC(IntPtr::Zero);

// Metafile的做成
Metafile* mf = new Metafile("ok.emf", hDC);

// DC的释放
ReleaseDC(IntPtr::Zero, hDC);

// Graphics的得到
Graphics* gm = Graphics::FromImage(mf);

// 画一条该死的线(可他就是出不来!!!!fuck)
gm->DrawLine(new Pen(Color::Red), 0, 600, 600, 0);
return 0;
}

一天,就弄出来这么点,对c++语法实在不熟悉啊。哪个老大说的明白点,到底哪错了,着急!
或者有这种source,给我,跟一跟就明白了!!!!
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaochongwei 2008-07-16
  • 打赏
  • 举报
回复
又试验下,跟应用程序也没关系,该成应用程序也出不来,但是在c#李就没问题。
草草草草地vc ,弄死我了。
xiaochongwei 2008-07-16
  • 打赏
  • 举报
回复
释放dc在原来位置应该是对的。
因为在c#里,释放的位置也是那,但是能出图。
估计问题是我这个工程 是控制台程序,获得的dc是错的,所以出不来,而c#的是应用程序,所以能出来。

所以,如果在dll里,怎么写才能获得dc呢?高手赐教。
xiaochongwei 2008-07-16
  • 打赏
  • 举报
回复
结贴,给分,平均分配,谢谢大家热心。
xiaochongwei 2008-07-16
  • 打赏
  • 举报
回复
结贴!
妈的,第一次用vc,就发现个恶心的问题
上面的source里面,有实例gm,但是缺了gm.dispose();
在dispose以前,图片内容一直就没有做成。

原来我的source里有gm.dispose;
注意,是gm.dispose,缺少了后面方法的括号,在vs2003里编译居然不出错,执行起来也不报错!!!!
真他妈的恶心,在c#里面行,是因为,少了括号,直接报语法错误!!!

哎,一个破问题折腾我一天办,妈了个日日日日。
整理下source,为后来vc的菜鸟,使用。

#include "stdafx.h"
using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;
using namespace System::Runtime::InteropServices;
#using <mscorlib.dll>

[DllImport("user32.dll")] extern Int32 GetDC(IntPtr);
[DllImport("user32.dll")] extern Int32 ReleaseDC(IntPtr, IntPtr);

int _tmain()
{
// DC的取得
IntPtr hDC = GetDC(IntPtr::Zero);

// Metafile的做成
Metafile* mf = new Metafile("ok.emf", hDC);

// DC的释放
ReleaseDC(IntPtr::Zero, hDC);

// Graphics的得到
Graphics* gm = Graphics::FromImage(mf);

// 画一条该死的线(可他就是出不来!!!!fuck)
gm->DrawLine(new Pen(Color::Red), 0, 600, 600, 0);
//大哥,看好了,下面这句话有括号
gm->Dispos()
return 0;
}

上面source在windows form 或者控制台工程,都可以跑。



sunyim 2008-07-16
  • 打赏
  • 举报
回复
正规的VC
Drawing
Imaging
都要自己写的

你这个是设置的问题吧
#include "stdafx.h"
using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;
using namespace System::Runtime::InteropServices;
#using <mscorlib.dll>

工程属性中 选择/clr 试试
长尾巴的悟空 2008-07-15
  • 打赏
  • 举报
回复
int _tmain()
{
// DC的取得
IntPtr hDC = GetDC(IntPtr::Zero);

// Metafile的做成
Metafile* mf = new Metafile("ok.emf", hDC);

// DC的释放
ReleaseDC(IntPtr::Zero, hDC); // 把此行
// Graphics的得到
Graphics* gm = Graphics::FromImage(mf);

// 画一条该死的线(可他就是出不来!!!!fuck)
gm->DrawLine(new Pen(Color::Red), 0, 600, 600, 0);
//放到这里试试...你把DC释放了,当然没有东西了
return 0;
}
xiaochongwei 2008-07-15
  • 打赏
  • 举报
回复
不是吧,大哥哥们,救命吧。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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