代码:

  public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Worignpt = new Point(250, 200);//空间坐标系原点
o = new Point3d(0, 0, 0);
a = new Point3d(100, 0, 0);
b = new Point3d(100, 100, 0);
c = new Point3d(0, 100, 0);
d = new Point3d(100, 100, 100);
e = new Point3d(100, 0, 100);
f = new Point3d(0, 0, 100);
g = new Point3d(0, 100, 100);
//xishu = Math.Sqrt(2d) / 2.0;
xishu = 0.5;
}
Point Worignpt;
Point3d o;
Point3d a;
Point3d b;
Point3d c;
Point3d d;
Point3d e;
Point3d f;
Point3d g;
double xishu = 0d;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var wo = Worignpt;
var wa = ConvertCPoint(wo, Convert2d(a));
var wb = ConvertCPoint(wo, Convert2d(b));
var wc = ConvertCPoint(wo, Convert2d(c));
var wd = ConvertCPoint(wo, Convert2d(d));
var we = ConvertCPoint(wo, Convert2d(this.e));
var wf = ConvertCPoint(wo, Convert2d(f));
var wg = ConvertCPoint(wo, Convert2d(g)); var oa = CreateLine(wo, wa);
canvas.Children.Add(oa); var ab = CreateLine(wa, wb);
canvas.Children.Add(ab); var bc = CreateLine(wb, wc);
canvas.Children.Add(bc); var oc = CreateLine(wo, wc);
canvas.Children.Add(oc); var ae = CreateLine(wa, we);
canvas.Children.Add(ae); var ed = CreateLine(we, wd);
canvas.Children.Add(ed); var db = CreateLine(wd, wb);
canvas.Children.Add(db); var dg = CreateLine(wd, wg);
canvas.Children.Add(dg); var gc = CreateLine(wg, wc);
canvas.Children.Add(gc); var ef = CreateLine(we, wf);
canvas.Children.Add(ef); var fg = CreateLine(wf, wg);
canvas.Children.Add(fg); var of = CreateLine(wo, wf);
canvas.Children.Add(of); } public Line CreateLine(Point pt1,Point pt2)
{
Line l = new Line();
l.Stroke = Brushes.Red;
l.StrokeThickness = 1;
l.X1 = pt1.X;
l.X2 = pt2.X;
l.Y1 = pt1.Y;
l.Y2 = pt2.Y; return l;
}
//空间坐标系转直角坐标系
public Point Convert2d(Point3d p3d)
{
Point p = default; int x = p3d.y;
int y = p3d.z; p.X = x - p3d.x * xishu;
p.Y = y - p3d.x * xishu; return p;
}
//直角坐标系转wpf客户端坐标
public Point ConvertCPoint(Point orign,Point pt)
{
Point wPt = default;
wPt.X = pt.X + orign.X;
wPt.Y = orign.Y - pt.Y;
return wPt;
}
} public struct Point3d
{
public int x;
public int y;
public int z;
public Point3d(int x,int y,int z)
{
this.x = x;
this.y = y;
this.z = z;
}
}

以高中数学里的空间坐标系为基础,做的。做出来,看着还行,感觉画的挺标准的。

wpf 空间坐标系下,画一个立方体轮廓的更多相关文章

  1. ThreeJS两个点作为起始坐标画一个立方体

    drawLineBox(new THREE.Vector3(100, 50, 0), new THREE.Vector3(200, 100, 100)); function drawLineBox(s ...

  2. Directx11学习笔记【十二】 画一个旋转的彩色立方体

    上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...

  3. Directx11教程(7) 画一个颜色立方体

    原文:Directx11教程(7) 画一个颜色立方体       前面教程我们通过D3D11画了一个三角形,本章我们将画一个颜色立方体,它的立体感更强.主要的变动是ModelClass类,在Model ...

  4. Effective前端3:用CSS画一个三角形

    p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...

  5. DX11 Without DirectX SDK--03 渲染一个立方体

    回到 DirectX11--使用Windows SDK来进行开发 一个立方体有8个顶点,然而绘制一个立方体需要画12个三角形,如果按照前面的方法绘制的话,则需要提供36个顶点,而且这里面的顶点数据会重 ...

  6. Effective前端(3)用CSS画一个三角形

    来源:https://zhuanlan.zhihu.com/p/26160325 三角形的场景很常见,打开一个页面可以看到各种各样的三角形: 由于div一般是四边形,要画个三角形并不是那么直观.你可以 ...

  7. 简述WPF中的画刷(Brush)

    原文:简述WPF中的画刷(Brush) -------------------------------------------------------------------------------- ...

  8. WPF样式之画刷结合样式

    第一种画刷,渐变画刷GradientBrush (拿线性渐变画刷LinearGradientBrush(其实它涵盖在GradientBrush画刷内.现在拿他来说事.),还有一个圆心渐变画刷Radia ...

  9. canvas游戏小试:画一个按方向键移动的圆点

    canvas游戏小试:画一个按方向键移动的圆点   自己对canvas,但又有一颗做游戏的心TT.然后记录一下对canvas的学习吧,用一个按方向键控制的小圆点来做练习.(编程时用了一些es6的语法) ...

  10. 用PS画一个齿轮

    以前只会画圆画方,这没技术含量.今天学了一个稍难一点的,画一个齿轮.图形有圆也有方.以下描述如何画出来的. 一.打开PS准备一画布,画一矩形并且填充颜色. 二.编辑->自由变换(CTRL+T), ...

随机推荐

  1. 安装HTMLTestRunner库

    安装 HTMLTestRunner 库的方法非常简单,直接 pip 就可以了 pip install html-testRunner 在 https://pypi.org/  中可以直接搜索到,并且官 ...

  2. Unity-PC 端调用SpVoice语音 (文字转语音)

    第一步引用文件 在VS当中 点击项目->添加引用-> 搜索Microsoft Speech Objecet Library 然后选中前面的白色方块点击确定就行了 插入之后 你的引用库中会多 ...

  3. Hive 查看表/分区更新时间

    1.查看分区 hive> show partitions table_name; 2.查看分区更新时间 获取hdfs路径 hive> desc formatted table_name; ...

  4. 论文研究区域图的制作方法:ArcGIS

      本文介绍基于ArcMap软件,绘制论文中研究区域示意图.概况图等的方法.   最近需要绘制与地学有关论文.文献中的研究区域概况图.对于这一类图片,我个人比较喜欢基于ArcMap与PPT结合的方式来 ...

  5. 使用WebApi+Vue3从0到1搭建《权限管理系统》:二、搭建JWT系统鉴权

    视频地址:[WebApi+Vue3从0到1搭建<权限管理系统>系列视频:搭建JWT系统鉴权-哔哩哔哩] https://b23.tv/R6cOcDO qq群:801913255 一.在ap ...

  6. 使用树莓派远程控制灯继电器开关,dht11温湿度网页显示,树莓派物联网

    前段时间使用esp8266搞了个智能家居,通过网页控制,但是没有办法实现远程控制,只能局域网控制,因为我没有平台,使用机制云等平台还需要开发app 使用chatgpt生成的main.py程序 from ...

  7. AI极速批量换脸!Roop-unleashed下载介绍,可直播

    要说AI换脸领域,最开始火的项目就是Roop了,Roop-unleashed作为Roop的嫡系分支,不仅继承了前者的强大基因,更是在功能上实现了重大突破与升级 核心特性 1.可以进行高精度的图片.视频 ...

  8. 牛客网-SQL专项练习1

    ①检索所有比"王华"年龄大的学生姓名.年龄和性别.SQL语句: 解析: 第一步:先找到王华的年龄 SELECT AGE FROM S WHRE SN = "王华" ...

  9. 浅谈DDD中的聚合

    简介: 在我看来并不是MVC的基础上增加领域层,使用充血模型,解耦基础服务,我的代码就符合DDD了. 作者 | 李宇飞(菜尊)来源 | 阿里开发者公众号 在我看来并不是MVC的基础上增加领域层,使用充 ...

  10. 3月2日,阿里云开源 PolarDB 企业级架构将迎来重磅发布

    简介:2022年3月2日,开源 PolarDB 企业级架构将迎来重磅发布!本次发布会将首次公开开源 PolarDB 的总体结构设计和企业级特性,对 PolarDB for PostgreSQL 的存储 ...