分类: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中绘制正弦曲线的更多相关文章

  1. 如何在ChemDraw中绘制分子立体结构

    ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...

  2. 如何在 WPF 中获取所有已经显式赋过值的依赖项属性

    原文:如何在 WPF 中获取所有已经显式赋过值的依赖项属性 获取 WPF 的依赖项属性的值时,会依照优先级去各个级别获取.这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值的.有什么方法可以获 ...

  3. 如何在 Matlab 中绘制带箭头的坐标系

    如何在 Matlab 中绘制带箭头的坐标系 如何在 Matlab 中绘制带箭头的坐标系 实现原理 演示效果 完整代码 实现原理 使用 matlab 的绘制函数时,默认设置为一个方框形的坐标系, 图1 ...

  4. DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)

            本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...

  5. 如何在WPF中引用Windows.System.Forms.Integration

    转自 http://www.cnblogs.com/sinozhang1988/archive/2012/11/28/2792804.html “未找到程序集 WindowsFormsIntegrat ...

  6. C# 如何在PDF中绘制不同风格类型的文本

    通过对控件Spire.PDF的测试,我们可以创建PDF文件并向文档中绘制文本.图片.表格.图形等内容,其中,对于绘制文本这一部分,Spire.PDF提供了三种字体类型来绘制文本,即: Standard ...

  7. 如何在WPF中调用Winform控件

    原文地址:http://hi.baidu.com/stuoopluwqbbeod/item/32ec38403da42ee2bcf45167 功能实现主要分三步:1.添加两个引用:WindowsFor ...

  8. 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)

    总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...

  9. 如何在WPF中定义窗体模板

    参考网址:https://www.cnblogs.com/chenxizhang/archive/2010/01/10/1643676.html可以在app.xaml中定义一个ControlTempl ...

随机推荐

  1. 爱上MVC3~为下拉列表框添加一个自定义验证规则

    回到目录 开发它的原因: 之前的同事,也是我的哥们,问我下拉列表框是否可以支持验证,这个问题看似简单,但确实MVC里有为我们提供,所以,只能自己写个扩展了,即自己写一个attribute特性,让它继承 ...

  2. PDO事务处理

    PDO事务处理 2014-9-3 10:44:19 By jiancaigege==================================== 概要:将多条sql操作(增删改)作为一个操作单 ...

  3. [Java面试四]Strust2总结及在面试中的一些问题.

    1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前端控制器模式] MV ...

  4. paip.解决access出现 -2147467259 无效的参数量

    paip.解决access出现 -2147467259   无效的参数量 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http: ...

  5. 每天一个linux命令(10):cat 命令

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件] ...

  6. Javascript单元测试之QUnit

    首先去Qunit官网下载. Qunit有一个js脚本文件和一个css我们在页面中引入它. <script src="qunit-2.0.1.js"></scrip ...

  7. 分享几个asp.net开发中的小技巧

    下面这几个,是在实际开发或阅读中发现的一些问题,有些甚至是有很多年开发人员写出的代码,也是很多人经常犯的错误.各位可以看看,你有没有躺着中枪. 第一个,对整型变量进行非null判断. // a 是in ...

  8. maven -- 学习笔记(一)之maven环境搭建

    首先先感谢博主的分享http://www.cnblogs.com/yjmyzz/p/3495762.html 基本概念: Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建 ...

  9. List和Dictionary泛型类查找效率浅析

    List和Dictionary泛型类查找效率存在巨大差异,前段时间亲历了一次.事情的背景是开发一个匹配程序,将书籍(BookID)推荐给网友(UserID),生成今日推荐数据时,有条规则是同一书籍七日 ...

  10. spring源码分析之spring-core asm概述

    ASM是什么? ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to m ...