稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush

稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush,第1张

概述[源码下载] 稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush 作者: webabcd 介绍 Silverlight 4.0 控件一览: WebBrowser - 在 Silverlight 应用程序中显示 HTML 内容(只能在 OOB 模式下运行) WebBrowserBrush - 一个 WebBrowser 类型的画笔(只能在 [源码下载]


稳扎稳打Silverlight(43) - 4.0控件之Webbrowser,WebbrowserBrush

作者: webabcd


介绍
Silverlight 4.0 控件一览:
Webbrowser - 在 Silverlight 应用程序中显示 HTML 内容(只能在 OOB 模式下运行) WebbrowserBrush - 一个 Webbrowser 类型的画笔(只能在 OOB 模式下运行) 

在线DEMO
http://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html


示例
 1、VIEwBox 的 Demo
WebbrowserDemo.xaml

代码 < navigation:Page  x:Class ="Silverlight40.Control.WebbrowserDemo"  
           xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
           xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"  
           xmlns:d
="http://schemas.microsoft.com/Expression/blend/2008"
           xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
           xmlns:navigation
="clr-namespace:System.windows.Controls;assembly=System.windows.Controls.Navigation"
           Title
="WebbrowserDemo Page" >
    
< GrID  x:name ="LayoutRoot" >
        
< StackPanel  HorizontalAlignment ="left" >

            
< button  name ="btnOutOfbrowser"  Click ="btnOutOfbrowser_Click"   />

            
< button  name ="btnSource"  Content ="Source 属性"  Click ="btnSource_Click"   />

            
< button  name ="btnNavigate"  Content ="Navigate 方法"  Click ="btnNavigate_Click"   />

            
< button  name ="btnNavigatetoString"  Content ="NavigatetoString 方法"  Click ="btnNavigatetoString_Click"   />

            
< button  name ="btnScript"  Content ="与 Webbrowser 中的脚本交互"  Click ="btnScript_Click"   />

            
< Webbrowser  name ="webbrowser"  WIDth ="400"  Height ="300"  ScriptNotify ="webbrowser_ScriptNotify"  LoadCompleted ="webbrowser_LoadCompleted"   />

        
</ StackPanel >
    
</ GrID >
</ navigation:Page >

WebbrowserDemo.xaml.cs

代码 /*
 * Webbrowser - 在 Silverlight 应用程序中显示 HTML 内容(只能在 OOB 模式下运行)
 *     Source - 将指定的 URI 中的 HTML 内容显示在 Webbrowser 中
 *     Navigate() - 加载指定的 URI 中的 HTML 内容到 Webbrowser 中
 *     NavigatetoString() - 显示指定的 HTML 内容
 *     SavetoString() - 获取当前 Webbrowser 所显示的 HTML 内容,返回一个字符串类型(不能跨域)
 *     InvokeScript() - 调用当前 Webbrowser 所加载的 HTML 内容中的 JavaScript 脚本(不能跨域)
 *     ScriptNotify - 当 Webbrowser 内的 JavaScript 以 “window.external.notify(string);” 的方式发送信息到 Silverlight 程序中时所触发的事件(不能跨域)
 *         NotifyEventArgs - ScriptNotify 事件的事件参数
 *         NotifyEventArgs.Value - JavaScript 发送到 Silverlight 程序中的信息。即 “window.external.notify(string);” 中的字符串
 
*/

using  System;
using  System.Collections.Generic;
using  System.linq;
using  System.Net;
using  System.windows;
using  System.windows.Controls;
using  System.windows.documents;
using  System.windows.input;
using  System.windows.Media;
using  System.windows.Media.Animation;
using  System.windows.Shapes;
using  System.windows.Navigation;

namespace  Silverlight40.Control
{
    
public   partial   class  WebbrowserDemo : Page
    {
        
public  WebbrowserDemo()
        {
            InitializeComponent();
        }

        
protected   overrIDe   voID  OnNavigatedTo(NavigationEventArgs e)
        {
            
if  (App.Current.IsRunningOutOfbrowser)
                btnOutOfbrowser.Content 
=   " 卸载 " ;
            
else
                btnOutOfbrowser.Content 
=   " 安装 " ;
        }

        
private   voID  btnOutOfbrowser_Click( object  sender, RoutedEventArgs e)
        {
            
if  ( ! App.Current.IsRunningOutOfbrowser  &&  App.Current.InstallState  ==  InstallState.notinstalled)
                App.Current.Install();
            
else
                MessageBox.Show(
" 已经安装,使用右键卸载 " );
        }


        
private   voID  btnSource_Click( object  sender, RoutedEventArgs e)
        {
            webbrowser.source 
=   new  Uri( " http://webabcd.cnblogs.com " );
        }

        
private   voID  btnNavigate_Click( object  sender, RoutedEventArgs e)
        {
            webbrowser.Navigate(
new  Uri( " http://www.cnblogs.com/webabcd/archive/2007/02/24/655035.HTML " ));
        }

        
private   voID  btnNavigatetoString_Click( object  sender, RoutedEventArgs e)
        {
            webbrowser.NavigatetoString(
" <div style='color: red'>webabcd</div> " );
        }

        
private   voID  btnScript_Click( object  sender, RoutedEventArgs e)
        {
            webbrowser.Navigate(
new  Uri( " http://localhost:9483/Silverlight40TestPage.HTML " ));
        }

        
private   voID  webbrowser_ScriptNotify( object  sender, NotifyEventArgs e)
        {
            
//  获取 Webbrowser 中的 HTML 内所包含的 JavaScript 发给 Silverlight 程序的信息
            MessageBox.Show(e.Value);

            
//  调用 Webbrowser 中的 HTML 内所包含的 JavaScript 函数
            MessageBox.Show(( string )webbrowser.InvokeScript( " hello " " webabcd " ));   
        }

        
private   voID  webbrowser_LoadCompleted( object  sender, NavigationEventArgs e)
        {
            
try
            {
                
string  HTML  =  webbrowser.SavetoString();
                MessageBox.Show(HTML);
            }
            
catch  (System.Security.SecurityException se)
            {
                MessageBox.Show(se.Message);
            }
        }
    }
}

相关的 JavaScript 部分
Silverlight40TestPage.HTML

代码      < script type = " text/JavaScript " >

        
//  此函数用于:Silverlight 程序调用 Webbrowser 所加载的 HTML 内容中的 JavaScript 函数
         function  hello(name) {
            
return   " hello:  "   +  name;
        }

        
//  此方法用于:在 Webbrowser 所加载的 HTML 内容中用 JavaScript 向 Silverlight 程序发送信息
         try  {
            window.external.notify(
' window.external.notify to silverlight ' );
        } 
catch  (err) { } 
    
    
< / script>

2、WebbrowserBrush 的 Demo
WebbrowserBrushDemo.xaml

代码 < navigation:Page  x:Class ="Silverlight40.Control.WebbrowserBrushDemo"  
           xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
           xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"  
           xmlns:d
="http://schemas.microsoft.com/Expression/blend/2008"
           xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
           xmlns:navigation
="clr-namespace:System.windows.Controls;assembly=System.windows.Controls.Navigation"
           Title
="WebbrowserBrushDemo Page" >
    
< GrID  x:name ="LayoutRoot"  MouseMove ="LayoutRoot_MouseMove" >
        
< StackPanel  HorizontalAlignment ="left" >

            
< button  name ="btnOutOfbrowser"  Click ="btnOutOfbrowser_Click"   />

            
< Webbrowser  name ="webbrowser"  WIDth ="200"  Height ="150"  Source ="http://webabcd.cnblogs.com"   />

            
<!--
                演示在 Rectangle.Fill 中使用 WebbrowserBrush
            
-->
            
< Rectangle  WIDth ="200"  Height ="150"  HorizontalAlignment ="left" >
                
< Rectangle.Fill >
                    
< WebbrowserBrush  x:name ="webbrowserBrushRectangle"  Sourcename ="webbrowser"  Opacity ="0.7" >
                        
< WebbrowserBrush.transform >
                            
< Scaletransform  ScaleX ="2"  ScaleY ="2"   />
                        
</ WebbrowserBrush.transform >
                    
</ WebbrowserBrush >
                
</ Rectangle.Fill >
            
</ Rectangle >

            
<!--
                演示在 Canvas.Background 中使用 WebbrowserBrush
            
-->
            
< Canvas  WIDth ="200"  Height ="150"  HorizontalAlignment ="left" >
                
< Canvas.Background >
                    
< WebbrowserBrush  x:name ="webbrowserBrushCanvas"  Sourcename ="webbrowser"  Opacity ="0.7"   />
                
</ Canvas.Background >
                
< GrID  WIDth ="200"  Height ="150" >
                    
< TextBlock  Text ="我是在 Canvas 里的 TextBlock"  HorizontalAlignment ="Center"  VerticalAlignment ="Center"   />
                
</ GrID >
            
</ Canvas >

            
<!--
                演示在 Path.Fill 中使用 WebbrowserBrush
            
-->
            
< Path  strokeThickness ="10"  stroke ="Red" >
                
< Path.Data >
                    
< EllipseGeometry  Center ="100,75"  RadiusX ="100"  RadiusY ="75"   />
                
</ Path.Data >
                
< Path.Fill >
                    
< WebbrowserBrush  x:name ="webbrowserBrushPath"  Sourcename ="webbrowser"  Opacity ="0.7"   />
                
</ Path.Fill >
            
</ Path >

        
</ StackPanel >
    
</ GrID >
</ navigation:Page >

WebbrowserBrushDemo.xaml.cs @H_305_1403@

代码 /*
 * WebbrowserBrush - 一个 Webbrowser 类型的画笔(只能在 OOB 模式下运行)
 *     Sourcename - 为此画笔提供 HTML 内容的 Webbrowser
 *     Redraw() - 重绘画笔。当 Webbrowser 所加载内容更改时,需要调用此方法
 
*/

using  System;
using  System.Collections.Generic;
using  System.linq;
using  System.Net;
using  System.windows;
using  System.windows.Controls;
using  System.windows.documents;
using  System.windows.input;
using  System.windows.Media;
using  System.windows.Media.Animation;
using  System.windows.Shapes;
using  System.windows.Navigation;

namespace  Silverlight40.Control
{
    
public   partial   class  WebbrowserBrushDemo : Page
    {
        
public  WebbrowserBrushDemo()
        {
            InitializeComponent();
        }

        
protected   overrIDe   voID  OnNavigatedTo(NavigationEventArgs e)
        {
            
if  (App.Current.IsRunningOutOfbrowser)
                btnOutOfbrowser.Content 
=   " 卸载 " ;
            
else
                btnOutOfbrowser.Content 
=   " 安装 " ;
        }

        
private   voID  btnOutOfbrowser_Click( object  sender, RoutedEventArgs e)
        {
            
if  ( ! App.Current.IsRunningOutOfbrowser  &&  App.Current.InstallState  ==  InstallState.notinstalled)
                App.Current.Install();
            
else
                MessageBox.Show(
" 已经安装,使用右键卸载 " );
        }


        
private   voID  LayoutRoot_MouseMove( object  sender, MouseEventArgs e)
        {
            webbrowserBrushRectangle.Redraw();
            webbrowserBrushCanvas.Redraw();
            webbrowserBrushPath.Redraw();
        }
    }
}


OK
[源码下载] 总结

以上是内存溢出为你收集整理的稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush全部内容,希望文章能够帮你解决稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1026708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存