【C#】第3章补充(一)如何在WPF中绘制正弦曲线
分类:C#、VS2015
创建日期:2016-06-19
使用教材:(十二五国家级规划教材)《C#程序设计及应用教程》(第3版)
一、要点
本例子提前使用了教材第13章介绍的基本知识。
二、设计步骤
1、新建一个名为MyTest1的WPF应用程序项目。
2、将MainWindow.xaml改为下面的内容。
<Window x:Class="MyTest1.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:MyTest1"
mc:Ignorable="d"
Title="DrawSinWindow" Height="300" Width="700" Background="#FFDCECE5">
<Window.Resources>
<Style TargetType="Path">
<Setter Property="StrokeThickness" Value="2" />
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<TranslateTransform X="360" Y="-110" />
<ScaleTransform ScaleY="-1" ScaleX="0.7" />
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Canvas Name="canvas1" Width="500" Height="220" Margin="20">
<!--绘制坐标轴-->
<Path Name="path1" Stroke="Red"
Data="M-385,0 L385,0 375 5 M385,0 L375,-5
M0,-100 L0,105 -5,95 M0,105 L5,95">
</Path>
<!--绘制正弦曲线-->
<Path Name="path2" Stroke="Black"/>
<Path Name="path3" Stroke="Blue"/>
</Canvas>
</Window>
3、将MainWindow.xaml.cs改为下面的内容。
using System;
using System.Windows;
using System.Windows.Media; namespace MyTest1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent(); GeometryGroup group1 = new GeometryGroup();
var g1 = GetSinGeometry(1, 100);
group1.Children.Add(g1);
path2.Data = group1; GeometryGroup group2 = new GeometryGroup();
var g2 = GetSinGeometry(60, 50);
group2.Children.Add(g2);
path3.Data = group2;
} public StreamGeometry GetSinGeometry(int dx, int dy)
{
StreamGeometry g = new StreamGeometry();
using (StreamGeometryContext ctx = g.Open())
{
int x0 = 360;
double y0 = Math.Sin(-x0 * Math.PI / 180.0);
ctx.BeginFigure(new Point(-x0, dy * y0), false, false);
for (int x = -x0; x < x0; x += dx)
{
double y = Math.Sin(x * Math.PI / 180.0);
ctx.LineTo(new Point(x, dy * y), true, true);
}
}
g.Freeze();
return g;
}
}
}
4、按<F5>键调试运行,就会看到下面的结果:

【C#】第3章补充(一)如何在WPF中绘制正弦曲线的更多相关文章
- 如何在ChemDraw中绘制分子立体结构
ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...
- 如何在 WPF 中获取所有已经显式赋过值的依赖项属性
原文:如何在 WPF 中获取所有已经显式赋过值的依赖项属性 获取 WPF 的依赖项属性的值时,会依照优先级去各个级别获取.这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值的.有什么方法可以获 ...
- 如何在 Matlab 中绘制带箭头的坐标系
如何在 Matlab 中绘制带箭头的坐标系 如何在 Matlab 中绘制带箭头的坐标系 实现原理 演示效果 完整代码 实现原理 使用 matlab 的绘制函数时,默认设置为一个方框形的坐标系, 图1 ...
- DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
- 如何在WPF中引用Windows.System.Forms.Integration
转自 http://www.cnblogs.com/sinozhang1988/archive/2012/11/28/2792804.html “未找到程序集 WindowsFormsIntegrat ...
- C# 如何在PDF中绘制不同风格类型的文本
通过对控件Spire.PDF的测试,我们可以创建PDF文件并向文档中绘制文本.图片.表格.图形等内容,其中,对于绘制文本这一部分,Spire.PDF提供了三种字体类型来绘制文本,即: Standard ...
- 如何在WPF中调用Winform控件
原文地址:http://hi.baidu.com/stuoopluwqbbeod/item/32ec38403da42ee2bcf45167 功能实现主要分三步:1.添加两个引用:WindowsFor ...
- 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...
- 如何在WPF中定义窗体模板
参考网址:https://www.cnblogs.com/chenxizhang/archive/2010/01/10/1643676.html可以在app.xaml中定义一个ControlTempl ...
随机推荐
- Redis快速入门详解
Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis ...
- HTML、CSS部分
要点:对Web标准的理解.浏览器差异.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端开发 技术等 1.Doctype作用? 严格模式与混杂模式-如何触发这两种模式,区分 ...
- 分离EF connectionString里的db连接串
创建EF模型后,自动生成的connectionString如下: <add name="TravelPPEntities" connectionString="me ...
- WebApi系列~开放的CORS,跨域资源访问对所有人开放
回到目录 之前有客户问我,如何AJAX跨域post,这个问题挺有意思,在我们看来,我是不被允许的,因为它是不安全的,但随着web api的火热,这个东西也被人们一步步的接受了,确实,有时,我们的接口希 ...
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离
回到目录 前几天看了一个基于sqlserver的负载均衡与读写分离的软件Moebius,实现的方式还是不错的,这使得用sqlserver数据库的同学时有机会对数据库进行更有效的优化了
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...
- fir.im Weekly - iOS 保持界面流畅的技巧
生命不息,coding 不止.本期 fir.im Weekly 收集了微博上的热转资源,包含 Android.iOS 开发工具.源码分享,产品 UI 设计的好文章,还有一些程序员成长的 Tips,希望 ...
- 那些年我们一起过的JS闭包,作用域,this,让我们一起划上完美的句号。
之前有写过闭包,作用域,this方面的文章,但现在想想当时写的真是废话太多了,以至于绕来绕去的,让新手反而更难理解了,所以就有了此篇文章,也好和闭包,作用域,this告一段落. 第一个问题:什么是闭包 ...
- 数据访问模式:数据并发控制(Data Concurrency Control)
1.数据并发控制(Data Concurrency Control)简介 数据并发控制(Data Concurrency Control)是用来处理在同一时刻对被持久化的业务对象进行多次修改的系统.当 ...
- java接口的应用举例
/* 接口的理解: 接口就是前期定义一个规则!某一个类A,为了扩展自身的功能,对外提供这个接口,后期只要是符合这个接口(规则) 的类(这个类是接口的子类),将子类对象的引用传递给类A中方法(方法中的参 ...