DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a1367230164
今日帖子: 17
在线用户: 28
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/9 8:58:45
标题:
BORLAND的BUG太大了,MDi和SDI不能画图? 浏览:2786
加入我的收藏
楼主: BORLAND的BUG太大了,MDi和SDI不能画图?

也就是说当你的form1.formstyle:=fsMDIform;

或是form1.formstyle:=fsMDIChild;canvas就不能用了

我该怎么办?

procedure TForm1.FormActivate(Sender: TObject);
VAR
 bi:TBitMap;
 re:TRect;
begin
bi:=TBitMap.Create ;
bi.LoadFromFile('C:\WINNT\Greenstone.bmp');
re:=Rect(0,0,ClientWidth,ClientHeight );
Canvas.StretchDraw(re,bi);
end;

 

----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/9 15:37:10
1楼: 注意我的目的是要在,MDI工程的MDI主窗体和SDI子窗体中

用canvas画出硬盘上的一个图片文件,但不行!

而我试过普通的窗体可以很容易搞定,该怎么修改如下程序!

----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 boy (阿門) ★☆☆☆☆ -
盒子活跃会员
2003/8/10 1:33:07
2楼: 你是要MDI加背景圖嗎?
----------------------------------------------
Delphi開發◆伺服器架設◆免安裝APACHE,PHP,CGI Perl, MYSQL ★
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/10 6:45:40
3楼: 是啊,可以吗?谢谢!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 asdf_jkl (方朋) ★☆☆☆☆ -
盒子活跃会员
2003/8/10 8:37:21
4楼: 添加一个tpanel控件,在上面画图,或加一个图片框显示图片
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/10 9:42:12
5楼: 你误解了,我把原来的问题贴出来吧:

1使用MDI窗体,可是(使用IMAGE)
背景使用ALCLIENT属性还是顶部有一段距离,这是怎么回事?
2 如果先用PANEL在在PANEL上方 IMAGE那么:当你新建子窗体时
窗体会被PANEL遮住而看不见;
不信你可以试试!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 boy (阿門) ★☆☆☆☆ -
盒子活跃会员
2003/8/10 15:32:00
6楼: 將 Panel1.Visible:=false;
----------------------------------------------
Delphi開發◆伺服器架設◆免安裝APACHE,PHP,CGI Perl, MYSQL ★
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/10 15:46:10
7楼: 不行的,如果PANEL。Visible:=false;那么IMAGE也没了
没有达到我的目的
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/8/11 9:05:57
8楼: 你的背景图是加在主窗体吗?
----------------------------------------------
-
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/8/11 9:07:14
9楼: 给MDI主窗口加图片(strectch)

将Form1的FormStyle设置为fsMDIForm,设置成MDI的主窗口。
加入image1,并调入一幅图片

在Form1的Private中定义:
FClientInstance,FPrevClientProc : TFarProc;
PROCEDURE ClientWndProc(VAR Message: TMessage);

在Form1的创建事件中加入:
FClientInstance := MakeObjectInstance(ClientWndProc);
FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance));


实现过程:
PROCEDURE TForm1.ClientWndProc(VAR Message: TMessage);
VAR
  CanvasClient:TCanvas;
begin
with Message do
case Msg of
WM_ERASEBKGND:
  begin
    CanvasClient:=Tcanvas.Create;
    CanvasClient.Handle:=GetDC(self.ClientHandle);
    CanvasClient.StretchDraw(rect(0,0,clientwidth,clientheight),image1.Picture.Bitmap);
    CanvasClient.Free;
  end;
else
  Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam, lParam);
end;

end;

----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/11 10:37:15
10楼: 谢谢我先试试!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/8/11 10:58:35
11楼: 非常感谢,实验通过!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行82.03125毫秒 RSS