专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »博文摘选 » WorldWind学习系列 3:功能分析——截屏功能和 有关 窗体分析 »正文

WorldWind学习系列 3:功能分析——截屏功能和 有关 窗体分析

来源: 发布时间:星期五, 2009年12月11日 浏览:157次 评论:0
 WorldWind.cs中截屏功能分析:

 

  private void menuItemSaveScreenShot_Click(object sender, .EventArgs e)处理截屏菜单命令

  主要是弹出SaveFileDialog设置保存格式和路径选择

  this.worldWindow.SaveScreenshot(dlg.FileName);//WorldWindow.cs中SaveScreenshot思路方法实现设置截图保存完整路径this.saveScreenShotFilePath = filePath;这里并没有实现截图

   WorldWindow.cs真正截屏功能实现是重载OnPa(PaEventArgs e)思路方法RenderRender里面SaveScreenShot思路方法

       (saveScreenShotFilePath != null)
          SaveScreenShot;

="code_img_closed" id="code_img_closed_8a17b73d-0a6d-4974-94dd-bb14e76af603" alt="" src="http://CrazyCoder.cn/WebFiles/200912/c81b5f44-d484-49b6-a014-e3b6fb17e11a.g" />="code_img_opened" id="code_img_opened_8a17b73d-0a6d-4974-94dd-bb14e76af603" style="display: none" _disibledevent=>="cnblogs_code_collapse">截屏输出代码 protected void SaveScreenShot
{
 
try
 {
 
using( Surface backbuffer = m_Device3d.GetBackBuffer(00, BackBufferType.Mono) )
 SurfaceLoader.Save(saveScreenShotFilePath, saveScreenShotImageFileFormat, backbuffer);
 saveScreenShotFilePath 
= null;
 }
 
catch(InvalidCallException caught)
 {
MessageBox.Show(caught.Message, 
"Screenshot save failed.", MessageBoxButtons.OK, MessageBoxIcon.Error );
 }
}



实现关键:

WorldWindow.cs中添加

using Microsoft.DirectX.Direct3D;
using Microsoft.DirectX;

这里了Direct3DDevice类(例子:m_Device3d)GetBackBuffer思路方法Direct3D命名空间SurfaceLoader.Save静态思路方法保存截图

该截屏方式大家可以学习借鉴

 

“有关窗体”:AboutDialog.cs分析


1、 从文件中加载图片
this.pictureBox.Image = Splash.GetStartupImage;
  public Image GetStartupImage
  {
    Image.FromFile(Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\splash.png");
  }
2.获取弹出窗体父窗体然后可以父窗体属性和思路方法

  private void pictureBox_Click(object sender, .EventArgs e)
  {
            MainApplication App 
= (MainApplication)this.Owner;   //获取弹出窗体父窗体             URL = MainApplication.WebsiteUrl;
            
            App.BrowseTo(URL);  
//父窗体思路方法
   
//MainApplication.BrowseTo( MainApplication.WebsiteUrl );  }

 

3.通过进程跳转到网页地址不是简单IE执行网页地址优点:防止客户计算机中没有使用IE浏览器

="code_img_closed" id="code_img_closed_58d2a5c7-5973-40a2-9eb8-1bb866127b9b" alt="" src="http://CrazyCoder.cn/WebFiles/200912/c81b5f44-d484-49b6-a014-e3b6fb17e11a.g" />="code_img_opened" id="code_img_opened_58d2a5c7-5973-40a2-9eb8-1bb866127b9b" style="display: none" _disibledevent=>="cnblogs_code_collapse">打开网址方式  public void BrowseTo( url)
 {
 ProcessStartInfo psi 
=  ProcessStartInfo;
 psi.FileName 
= url;
 psi.Verb 
= "open";
 psi.UseShellExecute 
= true;

 psi.CreateNoWindow 
= true;
 Process.Start(psi);

 }


 

简单地使用IE打开网络地址:Process.Start("iexplore.exe","http://www.163.com");
 4.重载了Form窗体KeyEvent事件处理OnKeyUp使窗体接受键盘响应
 protected override void _disibledevent=>  ;
   Keys.F4:
  (e.ModiersKeys.Control)    //Modiers是KeyUp或KeyDown修饰标志这标志指示按下是Ctrl、Alt 和 sht组合键
  {
   Close;
   e.Handled = true;     //表示事件已响应
  }
  ;
  }

  base.OnKeyUp(e);
 }

标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: