zoukankan      html  css  js  c++  java
  • 稳扎稳打Silverlight(43) 4.0控件之WebBrowser, WebBrowserBrush

    [索引页]
    [源码下载]


    稳扎稳打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

    代码
    /*
     * 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
    [源码下载]

  • 相关阅读:
    A Complete Tutorial to Learn Data Science with Python from Scratch
    OpenGL学习--08--基本渲染(灯光)
    OpenGL学习--07--模型加载(obj)
    OpenGL学习--06--键盘与鼠标交互
    OpenGL学习--05--纹理立方体--代码
    OpenGL学习--05--纹理立方体--BMP文件格式详解(转载)
    OpenGL学习—04--彩色立方体
    OpenGL学习--03--矩阵
    OpenGL学习--02--绘制一个红色三角形
    OpenGL学习--01--打开一个窗口
  • 原文地址:https://www.cnblogs.com/webabcd/p/1797836.html
Copyright © 2011-2022 走看看