[C#] AY.WPF-图形编程-高中生为起点-研究报告1
=========================www.ayjs.net独家拥有,未经许可,不许转载,违者追究法律责任
简单的引入:点的平移与转换
System.Window.Point类的 Offset方法
例如起始点10,30,offset(125,150)就变成135,180了
DEMO1:界面上个放个按钮和一个canvas
<Window x:Class="WpfApplication3.MainWindow"
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:local="clr-namespace:WpfApplication3"
mc:Ignorable="d"
Title="AY绘图基础" Height="420" Width="600" Loaded="Window_Loaded" WindowStartupLocation="CenterScreen">
<Grid>
<Button x:Name="btnmove" Content="平移" Click="btnmove_Click" Width="80" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Canvas x:Name="canvas" Width="400" Height="300" Background="FloralWhite"> </Canvas>
</Grid>
</Window>
后台在窗体初始化的时候,创建一个该两点的连线
Point p_start = new Point(, );
Point p_end = new Point(, );
Line l = new Line();
private void Window_Loaded(object sender, RoutedEventArgs e)
{ l.Stroke = Brushes.Black;
l.StrokeThickness = ;
l.X1 = p_start.X;
l.X2 = p_end.X;
l.Y1 = p_start.Y;
l.Y2 = p_end.Y;
canvas.Children.Add(l);
}
我们通过动画的方式迁移这个点
Storyboard sb = new Storyboard();
private void btnmove_Click(object sender, RoutedEventArgs e)
{
p_end = new Point(10, 30);//重置
p_end.Offset(, );//=>(135,180)
var daX = new DoubleAnimation(p_end.X, new Duration(TimeSpan.FromMilliseconds()));
var daY = new DoubleAnimation(p_end.Y, new Duration(TimeSpan.FromMilliseconds()));
sb.Children.Add(daX);
sb.Children.Add(daY);
Storyboard.SetTarget(daX, l);
Storyboard.SetTarget(daY, l);
Storyboard.SetTargetProperty(daX, new PropertyPath(Line.X2Property));
Storyboard.SetTargetProperty(daY, new PropertyPath(Line.Y2Property));
sb.Begin(this);
}
效果:
我们试试PointAnimationUsingKeyFrames,当然这里line没有point属性,所以不行,我们只能分开x2,y2同时动画了,不能point动画
对了,可能你听过 Cartesian coordinate system 笛卡尔坐标系
OpenGL中规则可能是这样的,而且还有其他坐标系,题外话不讲了
OpenGL使用右手坐标
从左到右,x递增
从下到上,y递增
从远到近,z递增
当然这里我还要介绍一个 Polar coordinate system 极坐标系
这个知识,一般高中学理科的都学过,没记错应该是 选修4-4 坐标系与参数方程
这个概念在做扇形图很重要,定义:
在平面内取一个定点O,叫做极点,自极点O引一条射线叫Ox,叫做极轴,再选一个单位长度,一个角度(通常取弧度)及其正方向(通常逆时针方向),这样就建立了一个极坐标系
设M是平面内任意一点,极点O与点M的距离 |OM|叫做点M的极径,叫做ρ;以极轴Ox为始边,射线OM为终边的叫xOM叫做点M的极角,叫做θ,有序数对(ρ,θ)叫做点M的极坐标
这里的r相当于极径ρ,所以这里关于极坐标和 直角坐标系的转换
r的另一端的坐标就等于 (x,y)=(r cosψ,r sinψ)
所以推导出另外两个公式 p平方=x平方+y平方,tanθ=y/x
(这两个公式过会我们有用)
常用坐标计算
两点间的距离A(x1,y1) B(x2,y2) :根号下( (x2-x1)的平方+(y2-y1)的平方)
原点O距离 根号下(x的平方+y的平方)
中点坐标都是 (二分之(x1+x2),二分之(y1+y2) )
两点间的距离A(x1,y1,z1) B(x2,y2,z2) :根号下( (x1-x2)的平方+(y1-y2)的平方+(z1-z2)的平方)
原点O距离 根号下(x的平方+y的平方+z的平方)
中点坐标都是 (二分之(x1+x2),二分之(y1+y2),二分之(z1+z2))
======================================== AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢===============
弧长,弧度
在数学和物理中,弧度是角的度量单位。它是由国际单位制导出的单位,单位缩写是rad。
定义:弧长等于半径的弧,其所对的圆心角为1弧度。(即两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角的弧度为1)。
初中时候:弧长=nπr/180,在这里n就是角度数,即圆心角n所对应的弧长
特殊弧长,也就是弧度除以180后乘以π
根据定义,一周的弧度数为2πr/r=2π,360°角=2π弧度,因此,1弧度约为57.3°,即57°17'44.806'',1°为π/180弧度,近似值为0.01745弧度,周角为2π弧度,平角(即180°角)为π弧度,直角为π/2弧度。
方差越小,数据就越集中在平均数附近,方差越大,这组数据大部分都偏离平均数。
标准差大,说明这组数据离散程度大,越小,说明离散程度小。
======================================== AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢===============
[C#] AY.WPF-图形编程-高中生为起点-研究报告1的更多相关文章
- 现代3D图形编程学习-基础简介(1) (译)
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...
- WPF图形/文字特别效果之一:交叉效果探讨(续)
原文:WPF图形/文字特别效果之一:交叉效果探讨(续) 在"WPF图形/文字特别效果之一:交叉效果探讨"(http://blog.csdn.net/johnsuna/archive ...
- 学废了系列 - WebGIS vs WebGL图形编程
目前工作中有不少涉及到地图的项目,我参加了几次技术评审,前端伙伴们在 WebGIS 方面的知识储备稍有不足,这次分享的主要目的是科普一些在前端领域比较常用的 WebGIS 知识.另外,我之前的工作中积 ...
- 现代3D图形编程学习-基础简介(3)-什么是opengl (译)
本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...
- 现代3D图形编程学习-基础简介(2) (译)
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...
- 现代3D图形编程学习-环境设置
本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...
- 现代3D图形编程学习-关于本书(译)
本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬 ...
- [ios]iOS 图形编程总结
转自:http://www.cocoachina.com/ios/20141104/10124.html iOS实现图形编程可以使用三种API(UIKIT.Core Graphics.OpenGL E ...
- Wince 中的图形编程
图形编程程序当中,笔者主要要和大家讨论的是画刷的创建和使用以及绘图函数,比如2D图像的绘制等等. *画刷的定义: HBRUSH hBrush; *画刷的类型: 1. 系统内置画刷:GetStockOb ...
随机推荐
- Gerrit的使用
为什么要使用Gerrit? 最先接触Gerrit时是Android开发过程中,提交代码给负责人审核时,用到的一款软件.它就是一款代码审核的工具.(向Git代码库推送push代码时,必须要经过Gerri ...
- load data ERROR 1197 (HY000)错误
有一份csv格式的文件,大小在14G左右.max_binlog_cache_size=4G. 登录mysql实例,选择对应的表通过load data往指定表里导数.大概20分钟左右,报以下错误: ER ...
- innobackupex使用实践
先介绍一下环境: MySQL:5.6.19 安装路径:/u01/mysql 数据文件:/u01/mysql/data 备份源:/u02/backup 我是异机恢复,和本机操作一样. 一. 全量备份 步 ...
- JavaScript-遍历数组
遍历数组:依次访问数组中每个元素 for(var i=0; i<arr.length;i++){ arr[i] //当前数组 } <!DOCTYPE html> <html&g ...
- php安装gearman扩展实现异步分步式任务
参考: 1.小喵爱你的博客 2.PHP Manual 依赖 1.gcc44 2.boost >=1.39 3.libevent 4.php5.3+ 5.update ld.so.conf 安装依 ...
- [转]oracle 10g数据泵之impdp-同时导入多个文件
要了解impdp,请先了解导出,我之前作过导出的笔记:oracle 10g数据泵之expdp.这两个笔记也许只对程序员有用,通常用于把正式区的数据导入到测试区,对数据库管理员也许帮助不大,他们使用这些 ...
- C# IEnumerable,Lambda表达式和 Parallel并行编程的用法
以前一直主要做C++和C方面的项目,对C#不太了解熟悉,但听说不难,也就一直没有在意学习C#方面的知识.今天有个C#项目,需要做些应用的扩展,同时修改一些bug.但看了C#代码,顿时觉得有些不适应了. ...
- 对IEnumerable<T>和IQueryable<T>的一点见解
今天学习了用EF模型做查询,感觉数据库上下文对象的扩展方法很强大,所以研究了一下where的实现原理,其中遇到了一个问题,就是关于IEnumerable和IQueryable的区别,所以查了查资料,这 ...
- html 问题
1.footer处理 目标: 页面较短,footer位于页面底部,出现滚动条时,依然在原来的位置,不随滚动条移动 页面较长,位于元素底部 .container{ position: relative ...
- QQ摄像头读取条码
跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手—打开新的Image Acquisitio ...