Silverlight 2动态创建矩形对象(附完整源代码)[转]

使用Silverlight 2的Canvas,写了一个动态创建Rectangle的示例,由于时间的原因所以难免有些不足之处,但程序功能都正常使用.用鼠标可以点击画布任何位置拖出一个矩形对象,松开鼠标即可完成一个矩形的创建!

程序运行效果:

XAML代码:

  1. <UserControl x:Class="Sample.dragrect"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Width="780" Height="400">
  5. <StackPanel Background="Green"
  6. Orientation="Horizontal">
  7. <Canvas x:Name="LayoutRoot"
  8. Background="GreenYellow"
  9. Width="650" Height="400"
  10. MouseMove="Canvas_MouseMove"
  11. MouseLeftButtonDown="Canvas_MouseLeftButtonDown"
  12. MouseLeftButtonUp="Canvas_MouseLeftButtonUp"/>
  13. <StackPanel Background="Gold" Margin="10">
  14. <TextBlock Text="选择颜色:"/>
  15. <Button x:Name="btnRed"
  16. Width="100" Height="50"
  17. FontSize="20" Content="Red" Margin="5"
  18. Click="btnRed_Click"/>
  19. <Button x:Name="btnBlue"
  20. Width="100" Height="50"
  21. FontSize="20" Content="Blue" Margin="5"
  22. Click="btnBlue_Click"/>
  23. <Button x:Name="btnGreen"
  24. Width="100" Height="50"
  25. FontSize="20" Content="Green" Margin="5"
  26. Click="btnGreen_Click"/>
  27. <Button x:Name="btnClear"
  28. Width="100" Height="50"
  29. FontSize="20" Content="Clear" Margin="5"
  30. Background="Red"
  31. Click="btnClear_Click"/>
  32. </StackPanel>
  33. </StackPanel>
  34. </UserControl>

C#代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. namespace Sample
  13. {
  14. public partial class dragrect : UserControl
  15. {
  16. public dragrect()
  17. {
  18. InitializeComponent();
  19. }
  20. bool mouseMoveing = false;
  21. Point mousePoint;
  22. Color rectColor = Colors.Red;
  23. private void Canvas_MouseMove(object sender, MouseEventArgs e)
  24. {
  25. //如果鼠标没有拖动矩形则返回
  26. if (!mouseMoveing)
  27. return;
  28. //获取鼠标当前坐标
  29. Point curPos = e.GetPosition(null);
  30. //取得最小坐标值
  31. double posX = mousePoint.X;
  32. double posY = mousePoint.Y;
  33. //计算矩形的宽和高
  34. double rectWidth = Math.Abs(curPos.X - mousePoint.X);
  35. double rectHeight = Math.Abs(curPos.Y - mousePoint.Y);
  36. //创建一个矩形元素
  37. Rectangle rect = new Rectangle();
  38. //声明矩形的宽和高
  39. rect.Width = rectWidth;
  40. rect.Height = rectHeight;
  41. //填充颜色
  42. rect.Fill = new SolidColorBrush(rectColor);
  43. //声明矩形在Canvas中创建的位置
  44. Canvas.SetLeft(rect, posX);
  45. Canvas.SetTop(rect, posY);
  46. //添加矩形到Canvas中
  47. LayoutRoot.Children.Add(rect);
  48. }
  49. private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  50. {
  51. //获取当前的鼠标位置
  52. mousePoint = e.GetPosition(null);
  53. //开始创建矩形
  54. mouseMoveing = true;
  55. }
  56. private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  57. {
  58. //矩形创建完成
  59. mouseMoveing = false;
  60. }
  61. private void btnRed_Click(object sender, RoutedEventArgs e)
  62. {
  63. //声明矩形颜色为Red
  64. rectColor = Colors.Red;
  65. }
  66. private void btnBlue_Click(object sender, RoutedEventArgs e)
  67. {
  68. //声明矩形颜色为Blue
  69. rectColor = Colors.Blue;
  70. }
  71. private void btnGreen_Click(object sender, RoutedEventArgs e)
  72. {
  73. //声明矩形颜色为Green
  74. rectColor = Colors.Green;
  75. }
  76. private void btnClear_Click(object sender, RoutedEventArgs e)
  77. {
  78. //清除所有Canvas内的矩形元素
  79. LayoutRoot.Children.Clear();
  80. }
  81. }
  82. }

转载于:https://www.cnblogs.com/frogbag/archive/2008/09/16/1291495.html

Silverlight 2动态创建矩形对象(附完整源代码)相关推荐

  1. Silverlight动态创建XAML对象和遍历对象

    1.动态创建XAML对象 StringBuilder xaml = new StringBuilder(); xaml.Append("<TextBlock "); xaml ...

  2. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )

    文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...

  3. QT通过JavaScript动态创建QML对象

    QT通过JavaScript动态创建QML对象 通过JavaScript动态创建QML对象 动态创建对象 动态创建组件 从QML字符串创建对象 维护动态创建的对象 动态删除对象 通过JavaScrip ...

  4. java动态创建代理对象

    代理模式在开发过程中有着众多好处,现在我先给大家首先介绍什么是代理模式,以及java的中代理模式的使用,最后再看代理模式的概念作用等自然就会明白了 1.动态创建代理对象 >>>> ...

  5. 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

    2023春节祝福系列第一弹(上) (放飞祈福孔明灯,祝福大家身体健康) (附完整源代码及资源免费下载) 目录 一.前言 二.一片星光闪烁的旋转星空 (1).效果展示: (2).相关源代码 (3).语法 ...

  6. 2023春节祝福系列第一弹(下)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

    2023春节祝福系列第一弹(下) (放飞祈福孔明灯,祝福大家身体健康) (附完整源代码及资源免费下载) 目录 四.画一朵真实的祥云 (1).画一个渐变的白色径向渐变背景 (2).应用一个SVG feT ...

  7. 学生成绩表c语言,学生成绩管理系统C语言(附完整源代码) .doc

    学生成绩管理系统C语言(附完整源代码) 课程设计报告 学生成绩管理系统 院系: 专业: 班级: 完成日期: 2009年1月03日 设计题目:学生成绩管理系统 目录 1.题目描述2.算法设计/设计思想3 ...

  8. Python语音计算器——通过语音输入实现数学计算(附完整源代码)

    Python语音计算器--通过语音输入实现数学计算(附完整源代码) 随着人工智能技术的不断进步,语音识别技术变得越来越成熟,我们可以利用这项技术实现很多有趣的应用.本文将会介绍一个基于Python和语 ...

  9. python3 动态创建类对象并调用函数

    1. 首先import相关模块`import importlib` 2. 加载你想要加载的模块`model = importlib.import_module(模块名称)` 3. 获取类对象`api_ ...

最新文章

  1. C#------Entity Framework6的T4模板的使用
  2. 贝壳测试|新赛道、新电源
  3. .NET语言的编译过程:中间语言(IL)和即时编译器(JIT)
  4. 电脑版企业微信_靠谱的企业客户管理系统电脑版下载
  5. WinCE6下的kernelIoControl使用方法
  6. Gson的fromJson()方法
  7. 微软Silverlight 5开发书籍汇总
  8. 苹果终于迷途知返?还是指纹识别更香...
  9. 平衡二叉树【学习笔记】
  10. ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
  11. 不宜使用Selenium自动化的10个测试场景
  12. java电子邮件收发系统的设计与实现_基于Java Mail的电子邮件收发系统的设计与实现毕业论文.doc...
  13. 用电机进行简单的PID参数整定
  14. Github上开源的数据可视化工具及作品分享(一)
  15. 【Linux命令】mergecap命令的用法
  16. 日语形容词形容动词变化型总结
  17. A2. Gsensor调试
  18. 请每一个孝顺的子女耐心的看下去!
  19. export default (imported as router) was not found_开关插座IEC/EN/AS/NZS澳洲SAA认证
  20. TiggerRamDisk的超详细使用教程(亲测成功)

热门文章

  1. Linux20180502 六周第四次课(5月2日)
  2. Windows系统下查看已共享的文件夹的方法
  3. 基于Bootstrap的Asp.net Mvc 分页的实现(转)
  4. XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复
  5. Adobe Photoshop CC 打开时报错~配置错误:请卸载并重新安装该产品
  6. 杭电 Let's go to play
  7. 一段代码把网站变成灰白色
  8. linux系统上tftp服务器的安装配置
  9. OpenCV-python学习笔记(六)——梯度算子,边缘检测和轮廓提取
  10. python离线录音转文字_python3实现语音转文字(语音识别)和文字转语音(语音合成)...