分类:C#、VS2015

创建日期:2016-06-19

使用教材:(十二五国家级规划教材)《C#程序设计及应用教程》(第3版)

一、要点

本例子提前使用了教材第13章介绍的基本知识。

二、设计步骤

1、新建一个名为MyTest1的WPF应用程序项目。

2、将MainWindow.xaml改为下面的内容。

  1. <Window x:Class="MyTest1.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local="clr-namespace:MyTest1"
  7. mc:Ignorable="d"
  8. Title="DrawSinWindow" Height="300" Width="700" Background="#FFDCECE5">
  9. <Window.Resources>
  10. <Style TargetType="Path">
  11. <Setter Property="StrokeThickness" Value="2" />
  12. <Setter Property="RenderTransform">
  13. <Setter.Value>
  14. <TransformGroup>
  15. <TranslateTransform X="360" Y="-110" />
  16. <ScaleTransform ScaleY="-1" ScaleX="0.7" />
  17. </TransformGroup>
  18. </Setter.Value>
  19. </Setter>
  20. </Style>
  21. </Window.Resources>
  22. <Canvas Name="canvas1" Width="500" Height="220" Margin="20">
  23. <!--绘制坐标轴-->
  24. <Path Name="path1" Stroke="Red"
  25. Data="M-385,0 L385,0 375 5 M385,0 L375,-5
  26. M0,-100 L0,105 -5,95 M0,105 L5,95">
  27. </Path>
  28. <!--绘制正弦曲线-->
  29. <Path Name="path2" Stroke="Black"/>
  30. <Path Name="path3" Stroke="Blue"/>
  31. </Canvas>
  32. </Window>

3、将MainWindow.xaml.cs改为下面的内容。

  1. using System;
  2. using System.Windows;
  3. using System.Windows.Media;
  4.  
  5. namespace MyTest1
  6. {
  7. public partial class MainWindow : Window
  8. {
  9. public MainWindow()
  10. {
  11. InitializeComponent();
  12.  
  13. GeometryGroup group1 = new GeometryGroup();
  14. var g1 = GetSinGeometry(1, 100);
  15. group1.Children.Add(g1);
  16. path2.Data = group1;
  17.  
  18. GeometryGroup group2 = new GeometryGroup();
  19. var g2 = GetSinGeometry(60, 50);
  20. group2.Children.Add(g2);
  21. path3.Data = group2;
  22. }
  23.  
  24. public StreamGeometry GetSinGeometry(int dx, int dy)
  25. {
  26. StreamGeometry g = new StreamGeometry();
  27. using (StreamGeometryContext ctx = g.Open())
  28. {
  29. int x0 = 360;
  30. double y0 = Math.Sin(-x0 * Math.PI / 180.0);
  31. ctx.BeginFigure(new Point(-x0, dy * y0), false, false);
  32. for (int x = -x0; x < x0; x += dx)
  33. {
  34. double y = Math.Sin(x * Math.PI / 180.0);
  35. ctx.LineTo(new Point(x, dy * y), true, true);
  36. }
  37. }
  38. g.Freeze();
  39. return g;
  40. }
  41. }
  42. }

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. .NET Framework中重点类型的继承关系

    继承关系 Object ├─Array │ └─T[] ├─ArrayList ├─List<T> └─String 集合类型的接口 下图展示了集合类型的各种接口的相互关系.注意,下图中所 ...

  2. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  3. vs2013中的“任务列表”菜单

    以前在java项目中经常用到todo. 现在vs2013也完美支持了. 首先,对于目前不确定而尚需完善的代码,在前面加 //TODO:by who --注释文字,比如: //TODO:lhl--类目I ...

  4. Java mac 上编写Java代码

    看视频学JAVA,不想下载 notepad++之类的,虽然知道mac有内嵌的JAVA sdk ,但是还是不知道怎么编写,今天终于编写了我的第一个JAVA程序,还是以 Hello World 开始吧 1 ...

  5. 第三节:Vue计算属性

    计算属性就是当其依赖的属性的值发生变化的时候,这个属性的值就会自动更新. 例子: <!DOCTYPE html> <html> <head> <meta ch ...

  6. linker command failed with exit code 1 (use -v to see invocation)

    背景:用U盘从另一台电脑考过来后,出现错误 linker command failed with exit code 1 (use -v to see invocation) 出现这种情况很可能是,项 ...

  7. 【转】SQL 操作类

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...

  8. java线程四种状态

    一个线程可以有四种状态: 1.新(new), 即线程刚刚创建,而并未执行 2.可运行(runnable),意味着一旦时间分片机制有空闲的CPU周期提供给一个线程,那个线程便可立即开始运行.因此,线程可 ...

  9. Kubernetes如何使用kube-dns实现服务发现

    大纲: •       Kubernetes中如何发现服务 •       如何发现Pod提供的服务 •       如何使用Service发现服务 •       如何使用kube-dns发现服务 ...

  10. nodejs在Liunx上的部署生产方式-PM2

    先安装:npm install -g pm2 (注意:使用它要先安装它,用root账号和全局模式安装一下) 安装完成使用:pm2 -v 查看版本信息 安装成功之后,启动nodejs项目:pm2 sta ...