如何得到主窗口中Image1->Canvas->Handle?

gioc 2006-08-31 12:31:24
我自定义的类写在一个.h文件中(#include了主窗口的头文件),类里有个画图函数,里面有如下代码:
::StretchDIBits(Application->MainForm->img1->Canvas->Handle,
0, 0,
dst_width, dst_height,
0, 0,
src_width, src_height,
&bmp_data,
pbmi.get(),
DIB_RGB_COLORS,
SRCCOPY);

我想调用主窗口中的img1->Canvas->Handle,
可编译总提示:E2316 'img1' is not a member of 'TForm'

请问该怎么写?
...全文
244 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gioc 2006-09-04
  • 打赏
  • 举报
回复
怎么没人答复吗?
到底能不能实现,给个准确答复,我也死心了!
gioc 2006-09-01
  • 打赏
  • 举报
回复
cczlp(不惑) ( )

要保证img1是__published或public中的成员。

img1是__published的!


cczlp 2006-08-31
  • 打赏
  • 举报
回复
要保证img1是__published或public中的成员。
gioc 2006-08-31
  • 打赏
  • 举报
回复
说的不清楚吗?

程序是单窗口的,窗体上有一个Timage,name是img1.
在另一个myclass.h文件中(没有对应的.cpp)我定义了个类:
class Cimage
{
private:
unsigned long bmp_data[500][500];
public:
Cimage(void); //构造函数
//virtual ~Cimage(void); //析构函数
//画图函数
void DrawBmp(HDC HTargetDC,int dst_width, int dst_height,
int src_width, int src_height) const;
};

void Cimage::DrawBmp(HDC HTargetDC,int dst_width, int dst_height,
int src_width, int src_height) const
{
//(1)在内存中配置一BITMAPINFO结构区块
std::auto_ptr<BITMAPINFO> pbmi(new BITMAPINFO());

//设置此BITMAPINFO结构成员
pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth = src_width;
pbmi->bmiHeader.biHeight = src_height;
pbmi->bmiHeader.biPlanes = 1;
pbmi->bmiHeader.biBitCount = 32;
pbmi->bmiHeader.biCompression = BI_RGB;// BI_RGB=0

pbmi->bmiHeader.biSizeImage =500*500*4;

//将内存中pbmi图文件绘制至img1的DC handle
::StretchDIBits(/*Application->MainForm->img1->Canvas->Handle,*/HTargetDC,
0, 0,
dst_width, dst_height,
0, 0,
src_width, src_height,
&bmp_data,
pbmi.get(),
DIB_RGB_COLORS,
SRCCOPY);
}

在上面DrawBmp画图函数中,我想去掉HDC HTargetDC参数,想在函数体内直接得到img1->Canvas的句柄,我用Application->MainForm->img1->Canvas->Handle代替HTargetDC,编译时出现E2316 'img1' is not a member of 'TForm'。
注:在myclass.h中我已经#include "main.h",包含了主窗体的头文件!
Y___Y 2006-08-31
  • 打赏
  • 举报
回复
你给的信息太少,别人很难分析原因
gioc 2006-08-31
  • 打赏
  • 举报
回复
to"Y___Y(一叶障目) ( ) 可能你的绘图版的名字写错了吧"

'img1' 的名字肯定没有错,因为其他地方多次用了。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

to "i_love_pc(好好学习,天天接分) 是不是应该把img1定义为public"

窗体上控件本来都是__published的,你说的我试了,还是出现同样的编译错误,而且还多了个错。


难道就是无法引用,还是有其他的方法?






i_love_pc 2006-08-31
  • 打赏
  • 举报
回复
是不是应该把img1定义为public
Y___Y 2006-08-31
  • 打赏
  • 举报
回复
可能你的绘图版的名字写错了吧

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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