SilverLight浏览器交互之:使用SilverLight程序把外部Html页作为资源进行绘图(附源码)
时间:2011-05-03 来源:记忆逝去的青春
概述
CompositionTarget.Rendering 事件
在核心 Silverlight 呈现过程呈现某一帧时发生。
当此事件发生时,表示存在一个可视框架可用于呈现到 Silverlight 内容图面。
然后,可以在处理程序中一帧一帧地修改应用程序的可视对象或任何其他方面的内容。
WebBrowserBrush.Redraw 方法
强制画笔以异步方式重绘自身。
效果
xaml代码:
<Grid x:Name="LayoutRoot">
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FF0055DD" Offset="0" />
<GradientStop Color="#FF00DDFF" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
<WebBrowser x:Name="web" Height="500" Width="500" Visibility="Collapsed" Source="/example-page.aspx" />
<Ellipse Margin="25" Stroke="Black" StrokeThickness="2">
<Ellipse.Fill>
<WebBrowserBrush SourceName="web" x:Name="EllipseBrush" />
</Ellipse.Fill>
</Ellipse>
</Grid>
cs代码:
public MainPage()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
//CompositionTarget.Rendering 事件
//在核心 Silverlight 呈现过程呈现某一帧时发生。
//当此事件发生时,表示存在一个可视框架可用于呈现到 Silverlight 内容图面。
//然后,可以在处理程序中一帧一帧地修改应用程序的可视对象或任何其他方面的内容。
CompositionTarget.Rendering += (s, ev) =>
{
//WebBrowserBrush.Redraw 方法
//强制画笔以异步方式重绘自身。
EllipseBrush.Redraw();
};
}
html页:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="example-page.aspx.cs" Inherits="PaintEllipse.Web.ClientBin.example_page" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Demo Page</title>
</head>
<body>
<div style="margin: 20px; font-family: Arial; font-size: 20pt">
这是一个out-of-browser应用:
<p>
SilverLight程序嵌套的是来自同一领域的HTML页面,在 <a href="example-page.html">SilverLight</a>
程序中html页面是不存在的。
</div>
<div style="margin: 20px">
<img src="ying.gif" />
</div>
</body>
</html>
大功告成!!!
源码下载
相关阅读 更多 +