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(0, 0, 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
相关文章读者评论发表评论 |