[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 ...
随机推荐
- java线程详解(三)
java线程间通信 首先看一段代码 class Res { String name; String sex; } class Input implements Runnable { private R ...
- berkeley db replica机制 - 主从同步
repmgr/repmgr_net.c, __repmgr_send(): 做send_broadcast, 然后根据policy 对DB_REP_PERMANENT的处理 __repmgr_send ...
- Piggy-Bank(HDU 1114)背包的一些基本变形
Piggy-Bank HDU 1114 初始化的细节问题: 因为要求恰好装满!! 所以初始化要注意: 初始化时除了F[0]为0,其它F[1..V]均设为−∞. 又这个题目是求最小价值: 则就是初始化 ...
- Zabbix3.0 自动电话报障
第一种:Pagerduty 网站:www.pagerduty.com 优点:老牌服务商,稳定 缺点:贵,英文,网站要FQ 价格参考(34美元每月才25个电话,*29每月是包年才有的价格) 安装方式: ...
- blob及行外数据
本文中我们假设innodb_page_size为16k,记录格式为compact. 1 大字段 大字段的类型可以参看这里, Data Type Storage Required TINYBLOB, T ...
- UI创意求助:手机贪吃蛇游戏方向控制键设计
继上一片博文<做梦想起来的C#简单实现贪吃蛇程序(LinQ + Entity)>之后,尝试做一个手机版本,大部分的功能都已经实现了.但在贪吃蛇的方向控制设计上一直不太满意.由于手机界面的大 ...
- ASP.NET Core 源码阅读笔记(3) ---Microsoft.AspNetCore.Hosting
有关Hosting的基础知识 Hosting是一个非常重要,但又很难翻译成中文的概念.翻译成:寄宿,大概能勉强地传达它的意思.我们知道,有一些病毒离开了活体之后就会死亡,我们把那些活体称为病毒的宿主. ...
- 写给自己看的Linux运维基础(二) - Apache/MySQL. 安全设置. 定时任务
本文使用环境为CentOS 6 Apache, PHP, MySQL等常用软件均可通过yum安装包获取 yum install httpd php mysql-server # mysql: 客户端; ...
- 微软 PowerShell Script Explorer 满血复活,正式发布
一年前的今天,微软在其Windows PowerShell官方博客声明中止 ‘Script Explorer’ 应用程序的开发. 一年后的今天,微软为其Script Explorer注入了新的生命.一 ...
- 工作圈redis 使用
redis作为内存数据库,更多的是作为内存cache来使用. 再所负责的工作圈中的使用,主要是分两方面: 1.数据对象: 主题的内容存储 主题回复内容的存储 用户信息存储 圈子信息存储 2.各数据对象 ...