Silverlight 2动态创建矩形对象(附完整源代码)
Silverlight 2动态创建矩形对象(附完整源代码)[转]
使用Silverlight 2的Canvas,写了一个动态创建Rectangle的示例,由于时间的原因所以难免有些不足之处,但程序功能都正常使用.用鼠标可以点击画布任何位置拖出一个矩形对象,松开鼠标即可完成一个矩形的创建!
程序运行效果:
XAML代码:
- <UserControl x:Class="Sample.dragrect"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Width="780" Height="400">
- <StackPanel Background="Green"
- Orientation="Horizontal">
- <Canvas x:Name="LayoutRoot"
- Background="GreenYellow"
- Width="650" Height="400"
- MouseMove="Canvas_MouseMove"
- MouseLeftButtonDown="Canvas_MouseLeftButtonDown"
- MouseLeftButtonUp="Canvas_MouseLeftButtonUp"/>
- <StackPanel Background="Gold" Margin="10">
- <TextBlock Text="选择颜色:"/>
- <Button x:Name="btnRed"
- Width="100" Height="50"
- FontSize="20" Content="Red" Margin="5"
- Click="btnRed_Click"/>
- <Button x:Name="btnBlue"
- Width="100" Height="50"
- FontSize="20" Content="Blue" Margin="5"
- Click="btnBlue_Click"/>
- <Button x:Name="btnGreen"
- Width="100" Height="50"
- FontSize="20" Content="Green" Margin="5"
- Click="btnGreen_Click"/>
- <Button x:Name="btnClear"
- Width="100" Height="50"
- FontSize="20" Content="Clear" Margin="5"
- Background="Red"
- Click="btnClear_Click"/>
- </StackPanel>
- </StackPanel>
- </UserControl>
C#代码:
- 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;
- namespace Sample
- {
- public partial class dragrect : UserControl
- {
- public dragrect()
- {
- InitializeComponent();
- }
- bool mouseMoveing = false;
- Point mousePoint;
- Color rectColor = Colors.Red;
- private void Canvas_MouseMove(object sender, MouseEventArgs e)
- {
- //如果鼠标没有拖动矩形则返回
- if (!mouseMoveing)
- return;
- //获取鼠标当前坐标
- Point curPos = e.GetPosition(null);
- //取得最小坐标值
- double posX = mousePoint.X;
- double posY = mousePoint.Y;
- //计算矩形的宽和高
- double rectWidth = Math.Abs(curPos.X - mousePoint.X);
- double rectHeight = Math.Abs(curPos.Y - mousePoint.Y);
- //创建一个矩形元素
- Rectangle rect = new Rectangle();
- //声明矩形的宽和高
- rect.Width = rectWidth;
- rect.Height = rectHeight;
- //填充颜色
- rect.Fill = new SolidColorBrush(rectColor);
- //声明矩形在Canvas中创建的位置
- Canvas.SetLeft(rect, posX);
- Canvas.SetTop(rect, posY);
- //添加矩形到Canvas中
- LayoutRoot.Children.Add(rect);
- }
- private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- //获取当前的鼠标位置
- mousePoint = e.GetPosition(null);
- //开始创建矩形
- mouseMoveing = true;
- }
- private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
- {
- //矩形创建完成
- mouseMoveing = false;
- }
- private void btnRed_Click(object sender, RoutedEventArgs e)
- {
- //声明矩形颜色为Red
- rectColor = Colors.Red;
- }
- private void btnBlue_Click(object sender, RoutedEventArgs e)
- {
- //声明矩形颜色为Blue
- rectColor = Colors.Blue;
- }
- private void btnGreen_Click(object sender, RoutedEventArgs e)
- {
- //声明矩形颜色为Green
- rectColor = Colors.Green;
- }
- private void btnClear_Click(object sender, RoutedEventArgs e)
- {
- //清除所有Canvas内的矩形元素
- LayoutRoot.Children.Clear();
- }
- }
- }
转载于:https://www.cnblogs.com/frogbag/archive/2008/09/16/1291495.html
Silverlight 2动态创建矩形对象(附完整源代码)相关推荐
- Silverlight动态创建XAML对象和遍历对象
1.动态创建XAML对象 StringBuilder xaml = new StringBuilder(); xaml.Append("<TextBlock "); xaml ...
- 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )
文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...
- QT通过JavaScript动态创建QML对象
QT通过JavaScript动态创建QML对象 通过JavaScript动态创建QML对象 动态创建对象 动态创建组件 从QML字符串创建对象 维护动态创建的对象 动态删除对象 通过JavaScrip ...
- java动态创建代理对象
代理模式在开发过程中有着众多好处,现在我先给大家首先介绍什么是代理模式,以及java的中代理模式的使用,最后再看代理模式的概念作用等自然就会明白了 1.动态创建代理对象 >>>> ...
- 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)
2023春节祝福系列第一弹(上) (放飞祈福孔明灯,祝福大家身体健康) (附完整源代码及资源免费下载) 目录 一.前言 二.一片星光闪烁的旋转星空 (1).效果展示: (2).相关源代码 (3).语法 ...
- 2023春节祝福系列第一弹(下)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)
2023春节祝福系列第一弹(下) (放飞祈福孔明灯,祝福大家身体健康) (附完整源代码及资源免费下载) 目录 四.画一朵真实的祥云 (1).画一个渐变的白色径向渐变背景 (2).应用一个SVG feT ...
- 学生成绩表c语言,学生成绩管理系统C语言(附完整源代码) .doc
学生成绩管理系统C语言(附完整源代码) 课程设计报告 学生成绩管理系统 院系: 专业: 班级: 完成日期: 2009年1月03日 设计题目:学生成绩管理系统 目录 1.题目描述2.算法设计/设计思想3 ...
- Python语音计算器——通过语音输入实现数学计算(附完整源代码)
Python语音计算器--通过语音输入实现数学计算(附完整源代码) 随着人工智能技术的不断进步,语音识别技术变得越来越成熟,我们可以利用这项技术实现很多有趣的应用.本文将会介绍一个基于Python和语 ...
- python3 动态创建类对象并调用函数
1. 首先import相关模块`import importlib` 2. 加载你想要加载的模块`model = importlib.import_module(模块名称)` 3. 获取类对象`api_ ...
最新文章
- C#------Entity Framework6的T4模板的使用
- 贝壳测试|新赛道、新电源
- .NET语言的编译过程:中间语言(IL)和即时编译器(JIT)
- 电脑版企业微信_靠谱的企业客户管理系统电脑版下载
- WinCE6下的kernelIoControl使用方法
- Gson的fromJson()方法
- 微软Silverlight 5开发书籍汇总
- 苹果终于迷途知返?还是指纹识别更香...
- 平衡二叉树【学习笔记】
- ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
- 不宜使用Selenium自动化的10个测试场景
- java电子邮件收发系统的设计与实现_基于Java Mail的电子邮件收发系统的设计与实现毕业论文.doc...
- 用电机进行简单的PID参数整定
- Github上开源的数据可视化工具及作品分享(一)
- 【Linux命令】mergecap命令的用法
- 日语形容词形容动词变化型总结
- A2. Gsensor调试
- 请每一个孝顺的子女耐心的看下去!
- export default (imported as router) was not found_开关插座IEC/EN/AS/NZS澳洲SAA认证
- TiggerRamDisk的超详细使用教程(亲测成功)
热门文章
- Linux20180502 六周第四次课(5月2日)
- Windows系统下查看已共享的文件夹的方法
- 基于Bootstrap的Asp.net Mvc 分页的实现(转)
- XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复
- Adobe Photoshop CC 打开时报错~配置错误:请卸载并重新安装该产品
- 杭电 Let's go to play
- 一段代码把网站变成灰白色
- linux系统上tftp服务器的安装配置
- OpenCV-python学习笔记(六)——梯度算子,边缘检测和轮廓提取
- python离线录音转文字_python3实现语音转文字(语音识别)和文字转语音(语音合成)...