WorldWind.cs中截屏功能分析:
2010-02-23 17:40
330 查看
private void menuItemSaveScreenShot_Click(object sender, System.EventArgs e)处理截屏的菜单命令的,
主要是弹出SaveFileDialog,设置保存格式和路径选择。
this.worldWindow.SaveScreenshot(dlg.FileName);//调用WorldWindow.cs中的SaveScreenshot()方法,实现设置截图的保存完整路径this.saveScreenShotFilePath = filePath;这里并没有实现截图。
WorldWindow.cs真正的截屏功能实现是重载的OnPaint(PaintEventArgs e)方法调用的Render(),Render()里面调用SaveScreenShot()方法。
if (saveScreenShotFilePath != null)
SaveScreenShot();
截屏输出代码
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;
这里的调用了Direct3D的Device类(实例:m_Device3d)的GetBackBuffer方法,调用Direct3D命名空间的SurfaceLoader.Save静态方法保存截图。
该截屏方式大家可以学习借鉴一下。
“关于窗体”:AboutDialog.cs分析
1、 从文件中加载图片
this.pictureBox.Image = Splash.GetStartupImage();
public static Image GetStartupImage()
{
return Image.FromFile(Path.GetDirectoryName(Application.ExecutablePath) + "//Data//Icons//Interface//splash.png");
}
2.获取弹出窗体的父窗体,然后可以调用父窗体的属性和方法。
private void pictureBox_Click(object sender, System.EventArgs e)
{
MainApplication mainApp = (MainApplication)this.Owner; //获取弹出窗体的父窗体
string URL = MainApplication.WebsiteUrl;
mainApp.BrowseTo(URL); //调用父窗体的方法
//MainApplication.BrowseTo( MainApplication.WebsiteUrl );
}
3.通过进程跳转到网页地址,不是简单的调用IE执行网页地址,优点:防止客户计算机中没有使用IE浏览器
打开网址的方式
public void BrowseTo(string url)
{
ProcessStartInfo psi = new 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 OnKeyUp(System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.Escape:
Close();
e.Handled = true;
break;
case Keys.F4:
if(e.Modifiers==Keys.Control) //Modifiers是KeyUp或KeyDown的修饰标志,这标志指示按下的是Ctrl、Alt 和 shift的组合键
{
Close();
e.Handled = true; //表示事件已响应
}
break;
}
base.OnKeyUp(e);
}
来源:/article/4777629.html
主要是弹出SaveFileDialog,设置保存格式和路径选择。
this.worldWindow.SaveScreenshot(dlg.FileName);//调用WorldWindow.cs中的SaveScreenshot()方法,实现设置截图的保存完整路径this.saveScreenShotFilePath = filePath;这里并没有实现截图。
WorldWindow.cs真正的截屏功能实现是重载的OnPaint(PaintEventArgs e)方法调用的Render(),Render()里面调用SaveScreenShot()方法。
if (saveScreenShotFilePath != null)
SaveScreenShot();
截屏输出代码
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;
这里的调用了Direct3D的Device类(实例:m_Device3d)的GetBackBuffer方法,调用Direct3D命名空间的SurfaceLoader.Save静态方法保存截图。
该截屏方式大家可以学习借鉴一下。
“关于窗体”:AboutDialog.cs分析
1、 从文件中加载图片
this.pictureBox.Image = Splash.GetStartupImage();
public static Image GetStartupImage()
{
return Image.FromFile(Path.GetDirectoryName(Application.ExecutablePath) + "//Data//Icons//Interface//splash.png");
}
2.获取弹出窗体的父窗体,然后可以调用父窗体的属性和方法。
private void pictureBox_Click(object sender, System.EventArgs e)
{
MainApplication mainApp = (MainApplication)this.Owner; //获取弹出窗体的父窗体
string URL = MainApplication.WebsiteUrl;
mainApp.BrowseTo(URL); //调用父窗体的方法
//MainApplication.BrowseTo( MainApplication.WebsiteUrl );
}
3.通过进程跳转到网页地址,不是简单的调用IE执行网页地址,优点:防止客户计算机中没有使用IE浏览器
打开网址的方式
public void BrowseTo(string url)
{
ProcessStartInfo psi = new 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 OnKeyUp(System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.Escape:
Close();
e.Handled = true;
break;
case Keys.F4:
if(e.Modifiers==Keys.Control) //Modifiers是KeyUp或KeyDown的修饰标志,这标志指示按下的是Ctrl、Alt 和 shift的组合键
{
Close();
e.Handled = true; //表示事件已响应
}
break;
}
base.OnKeyUp(e);
}
来源:/article/4777629.html
相关文章推荐
- Solution for Designer error when opening WorldWind.cs in WW1.4.0
- android 截屏功能分析
- WorldWind学习系列三:简单功能分析——截屏功能和“关于”窗体分析
- android4.3 截屏功能的尝试与失败分析
- android4.3 截屏功能的尝试与失败分析
- [转]有关WorldWind1.4的worldwind.cs窗口设计器打开错误的解决方法
- android4.3 截屏功能的尝试与失败分析
- 有关WorldWind1.4的worldwind.cs窗口设计器打开错误的解决方法
- 各种网吧管理系统 功能分析 下线后自动注销QQ程序等
- unity3D界面分析说明功能操作讲解
- 使用搜狗输入法的词库记忆功能和截屏功能
- 管理Discuz!代码分析的收集整理[2][文件功能]
- Discuz! X2回帖奖励功能分析
- 汽车电子功能安全标准ISO26262解析(十二)——HARA分析
- PHP购物车模块功能分析(函数讲解,附下载地址)
- JavaScript实现打印星型金字塔功能实例分析
- 网络分析与网络数据集—功能调用SOAP API
- TCP/IP协议分析含义与功能
- php实现自动获取生成文章主题关键词功能的深入分析