1- Создайте проект wpf / c # и назовите его WpfApplication1 .
2- Копироватьи вставьте следующий код в xaml файл
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="400" Width="400">
<Grid Name="grid1"/>
</Window>
3- Скопируйте и вставьте следующий код в cs файл
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
DispatcherTimer _timer = null;
PerspectiveCamera _perspectiveCamera = null;
double _angle = 0;
public MainWindow()
{
this.InitializeComponent();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
GenerateViewPort();
}
private void GenerateViewPort()
{
MakeCamera();
Viewport3D Viewport3D1 = new Viewport3D();
Viewport3D1.Camera = _perspectiveCamera;
grid1.Children.Add(Viewport3D1);
Viewport3D1.Loaded += new RoutedEventHandler(Viewport3D1_Loaded);
ModelVisual3D ModelVisual3D1 = new ModelVisual3D();
Viewport3D1.Children.Add(ModelVisual3D1);
Model3DGroup Model3DGroup1 = new Model3DGroup();
ModelVisual3D1.Content = Model3DGroup1;
AmbientLight AmbientLight1 = new AmbientLight();
AmbientLight1.Color = Colors.Gray;
Model3DGroup1.Children.Add(AmbientLight1);
DirectionalLight DirectionalLight1 = new DirectionalLight();
DirectionalLight1.Color = Colors.Gray;
DirectionalLight1.Direction = ((Vector3D)new Vector3DConverter().ConvertFromString("-1,-3,-2"));
Model3DGroup1.Children.Add(DirectionalLight1);
DirectionalLight1 = new DirectionalLight();
DirectionalLight1.Color = Colors.Gray;
DirectionalLight1.Direction = ((Vector3D)new Vector3DConverter().ConvertFromString("1,-2,3"));
Model3DGroup1.Children.Add(DirectionalLight1);
Model3DGroup Model3DGroup2 = new Model3DGroup();
Model3DGroup1.Children.Add(Model3DGroup2);
GeometryModel3D GeometryModel3D1 = new GeometryModel3D();
Model3DGroup2.Children.Add(GeometryModel3D1);
MeshGeometry3D MeshGeometry3D1 = new MeshGeometry3D();
MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("-1,-1,-1 1,-1,-1 1,-1,1 -1,-1,1"));
MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
GeometryModel3D1.Geometry = MeshGeometry3D1;
DiffuseMaterial DiffuseMaterial1 = new DiffuseMaterial();
GeometryModel3D1.Material = DiffuseMaterial1;
ImageBrush ImageBrush1 = new ImageBrush();
ImageBrush1.ImageSource = BitmapFrame.Create(new System.IO.MemoryStream(Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfiCRQOHSnyc2vqAAAB00lEQVRIx93UvUtcURAF8FkVRRuJKQQlRlQUrCKKIIgYBEshIFiFiJ2F5Sadf8AiIthbxyqljbVgIQlYWMVqQRITP4iI+LG/NC/78dzImlTJVPeeOefMu3PvvIj/PQwa/Bt5hxs3Oh7i1D3o0B8N0RD9f25QQyQGxgw96nBDxsq3fShYvEebBJP38EUF9JWAVmfVLKobJPIzreXgqNNyCxldpq2CVdO6ZCrkp0bTnzWSWCyZseFYOo5tmLGUyEeqNWbYiVrixHBJ1VDmcB3n8SRZfYhPcRif4zAieqI3euJFvIrGiIg4j+tq9edcgCPL2qteXbtlR+DCXGWqXg7ceqvxwftvlHULcupL8Ar4ZqqmR/TSV7DyC5hSwL7uFHHMuh071iteXUR45iMKpiJCmzx+6K2g1Mm5K/b9Tk7F1HjuHHltYRPMp2pkE+m+/WSVTTFeg82Qx2Yq2e0KB8YjIow7wNW9I75HPkx4pymVmgcLxf0CeJNiNcmaqN7nNVxqKe5bXGKtGrf6D+VLRDRHaVz7ojlBazTYi4iI0nAvlqG1hHq7KNg2a9a2AnbLXl4NFgOpyTwx8Ah5RIROW0X5ls7f8TIPmjyN4YjYy3x/ZPV/K34C94HIKdJTZ0UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDktMjBUMTQ6Mjk6NDErMDI6MDC4vqD7AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA5LTIwVDE0OjI5OjQxKzAyOjAwyeMYRwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=")));
DiffuseMaterial1.Brush = ImageBrush1;
GeometryModel3D GeometryModel3D2 = new GeometryModel3D();
Model3DGroup2.Children.Add(GeometryModel3D2);
MeshGeometry3D1 = new MeshGeometry3D();
MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("1,1,1 1,1,-1 -1,1,-1 -1,1,1"));
MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
GeometryModel3D2.Geometry = MeshGeometry3D1;
DiffuseMaterial DiffuseMaterial2 = new DiffuseMaterial();
GeometryModel3D2.Material = DiffuseMaterial2;
ImageBrush1 = new ImageBrush();
ImageBrush1.ImageSource = BitmapFrame.Create(new System.IO.MemoryStream(Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAAEYAAABACAYAAACndwGZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAAXEAAAFxAbuK4fQAAAlHSURBVHhe5ZwNjBTlHcb/M3sL8nUIh1ioYFUEBLGIWtSiHkXkFGNTsDQ1Bmwl2li+aSW2JbWV2GJUPGga20hbrCgVsE2bWKB8FqGItRBA8QM4QAUEjo9DT7ndnenzvDO77MzsHrO7M3NL/CXP7juvcjPz3Pv9/t/TTNMUN5qm2akvJvSkHIxpA10JXQpdBF0AtYfi0CnoE+gk9D70LlQHJaHQaCljWkPDoOHQN6B+UAXkl8+hjdBqaAX0BhQoyhN+uBUS10HPQcch3iQosRTNhHpAgaA8cJuiMoOlBnoNyn6ZMNQEzYd6QSVBD8KsSgOhZ6Bb1FUz8HaXdNOkZ1dNulWJdGhr3b8JLcknn5ly4CiKxX5T6hu8z5qDFPQ76KfQCWYUSljGnAfNgiZDeduO6/vpUn21JjdeqcsN/TXp0vHs9zx60pQN201Z/T9D/vm6Ie9/2KxRH0NToZfUVQGEYUwf6C/QV9WViwvO12RcjS73j4xJ354lma/Y9LYhC5YZ8vzylDSySc7NH6EJUKO68kHQxrAtoSmV6ioLGjJrfEzuq4lJK3bCAXP4uClzFqdk3tKUfJrboB3QndA+dXUWgjTm+xDrtaPq0ISJo2Iyc1yFdGxnZ4bIvo9NmTIvKX9bb9g5Dg5A/OVtV1fNEJQx4yGaoqsrm15f1uSVWXEZcGnpVaZQFq0y5MGnEtLwqZ1xBjbGt0Jvqqs8BGHMGIiNm8OU2wfrsnBmXDp1sDNaADbMo36WkB11nvc7DA2BOJLOSanGfB1aCbEXyjD9OzF54gcVojusahlOYDJx1yMJWb/NU7XqoMHQEXXlgp4U+/icz7wMOUyZgPbkyYfKwxRyPmZcy5+My7BrPA90CbQAylsCin2FP0HdraTFvbfFpHZiIVOeaGiDmdlf0dYN6u3x4HboYSvppZiqNBai2xmGX6vLq0/EpSJmZ5Qhh46ZMmh8Qg7WO96X0wiOud5RVzbFtDGdIU7auqgr0K1Kk63z49K1k692qUVZs8WQ4dMSknI2Oasg9lQZimljZkAZU8iz0yvOCVPI0Kt11Tm44BLI3VbyDIWUmG7QbogLS4pv3aSrsUpQcNzx0VFT+vTQQmvAOTLuN7ZJ9mMwmMU2iJNelVloieF8I2NKHO3sbHTLQfHadkN6fvu0euibJyX8zqQLph36UfacLq6COGXI4NcYGvKglbQYh3nP5RcFV4Vmv5iSk/ZIdQNMunVqeOaMvlmXfl/xPPsU+1vh1xjOmqusJKuayLQxwXZBnTs4H3TrLjM0c1hNZ9zjef5qKLMK6NeYXRCH0orRt+hyxcXBlRbC2XfPC6MzZ8zQmBoAZkEv7rWS/o3hSn312BF6/aPfq5A/zAh+7aBHV01WPxNX39nQnJofJdTwPkjOa2WZ4+Iu+9t/r2Suafcl0ZOcugdbVFzsPmDK0MkJ+eCw87mu7aPJv55u5f4tl8SKNwwZAdOz4LZMFTxp8FtiYEdiKD+ti/C4rLsma2q9Jee/75oYnDUFWnKGDNDdC2fsrm5iQmfpcCsnmnajnQqdqMxpi677a309ZYPjGd9tDMtKXzsVCVGZc9VlnoKg3tO/MRiQ2qnIiMKcPt5F+d788OTmorJSOu9d2PoI/m//RgZI3UFTLThxupANlxJWzSmtQf77BkO++RNHA7wPja8a/rGL4vpKJ+aea3RoK7JnUWvp0tHOKJB1Ww2pRi+YxTEYU8US8BvonDSFnGoUmVjreLGCaN/GU2lU+aMxvqpTOZNjKFYyNGYiVNQebznQHtPbeVOKH4lzb9yFatLTpYVj40rULYZopMcyKo8JNL5auTa+KzEaLmWb5h8bDfWzs8g0vhmQob5zDfLMda334yuwGBS/NDdFWPFUaaaQuUtTMnmuI0BrM3wYrNOMtJpFU2u9kRK2KeS9Dzzv/R4//FcNM1pjojCFbNvtMUa9ZwFthsm4t0iIyhSGjmze6dml3MIP/8bEKtbaqVCJyhSy8S1DTjuHQGxs1jPh2xhtSGPH+36VrH9sQQpdnJ0ZMFGaQpas9ZQWRkE0MOF3oYqjQW6ddOXF3dW6LP5FsKt4NGPIhIR7W0MG9kKXPCcuVZXenrIUPm8S6T7qtBxnJPEZGLf3OD3xW2IYCalMIUvXGbJzn9fQUpg5PxWZKWTJ2pTbFBafF6yk/6rEvd16K2kNwZ9+mcGRwcHAw2zCNIXP/+sXPc/PNpRjNYVfYxjZ9nsrabFgWUp2fRRcqeF2RjocjZGcYZlCXvm3IW95A4rm2t+KQrZoGfbBbZTMbiS3UZb8Mtgt2g+PmCqiM6wtWnbR/cc1yd5DjvdmXB6jHlRmIW0M4Q4BlygysK3hXCMoKlFiuEMYZuDRrD8n3aYQxiU7MgsNA+FuJEeGmV3J7l002fLcuREGwkWpYVM9YSBsW3jYI2NEoSWGsAGebiUtDmDGO/bxpCSDbYsDh7HA9zyWdJvCwKGHIE/pKKbQPg8ts5IWyzcbcv/spGrtyxGu8o2ckVC/RBePQjutpJNCq1Iajmm2QoyZyTBpdExqJ5VXHN5np63IzZVvetrC5dAdkOc/FFOV0nCDnzG+uO0ZuLbx8LNJMYJrj0uC2ys1P85pyl6IsYR5n7TYEpPmu9BCyPEP7rjeCoAOcp+5UDjvYgB0jmUFXwHQpXaMjAr/IeS4+6ubDLnugSbZvsdrehQsxuTwmvFNuUzh2jarT15T0pRaYtI8AP0WcsRVRH3IgoNDHrLg+CoHB6ERUGSHLNKMhBZBngp0IcY4DAxieBpj94LmyAlTapeklPIsibwNMcauTl2dhaCNIVdAPLM0QF25oEHpg1y9exR9jwybd5pqzkblOadEOLzgWMV7FiUPYRhDOJdKH/3zhCwR/vgb+utSPTB99E+Xzp7jX16ONYhs2GFkjv7xnGQz8ADFNCizlOCXsIxJMwjijJWnVJqFt2NkA2PwOMVoy5PZgKPpU42mHDom8g5MYJXxARsYHmN+BMK/LBzlCT/cChjW7U0Qf3CY4vCewQklx/EoD9ymqMxw4PkgHtxkl5n9QqWKSyE/hy6GAoEehFmV8sEzTvzzBbdBnNUyIClnW5QHjrb/A62B+CcMXoe8L1ECLWWMG45w+kNcV+YfveAJF+4HsGPnBjt7E5YyLsZziXUPVHzchw/KxZiywzRN+T/CjEaF1Vlf8wAAAABJRU5ErkJggg==")));
DiffuseMaterial2.Brush = ImageBrush1;
GeometryModel3D GeometryModel3D3 = new GeometryModel3D();
Model3DGroup2.Children.Add(GeometryModel3D3);
MeshGeometry3D1 = new MeshGeometry3D();
MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("-1,1,-1 -1,-1,-1 -1,-1,1 -1,1,1"));
MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
GeometryModel3D3.Geometry = MeshGeometry3D1;
DiffuseMaterial DiffuseMaterial3 = new DiffuseMaterial();
GeometryModel3D3.Material = DiffuseMaterial3;
ImageBrush1 = new ImageBrush();
ImageBrush1.ImageSource = BitmapFrame.Create(new System.IO.MemoryStream(Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfiCRQOHSnyc2vqAAAB00lEQVRIx93UvUtcURAF8FkVRRuJKQQlRlQUrCKKIIgYBEshIFiFiJ2F5Sadf8AiIthbxyqljbVgIQlYWMVqQRITP4iI+LG/NC/78dzImlTJVPeeOefMu3PvvIj/PQwa/Bt5hxs3Oh7i1D3o0B8N0RD9f25QQyQGxgw96nBDxsq3fShYvEebBJP38EUF9JWAVmfVLKobJPIzreXgqNNyCxldpq2CVdO6ZCrkp0bTnzWSWCyZseFYOo5tmLGUyEeqNWbYiVrixHBJ1VDmcB3n8SRZfYhPcRif4zAieqI3euJFvIrGiIg4j+tq9edcgCPL2qteXbtlR+DCXGWqXg7ceqvxwftvlHULcupL8Ar4ZqqmR/TSV7DyC5hSwL7uFHHMuh071iteXUR45iMKpiJCmzx+6K2g1Mm5K/b9Tk7F1HjuHHltYRPMp2pkE+m+/WSVTTFeg82Qx2Yq2e0KB8YjIow7wNW9I75HPkx4pymVmgcLxf0CeJNiNcmaqN7nNVxqKe5bXGKtGrf6D+VLRDRHaVz7ojlBazTYi4iI0nAvlqG1hHq7KNg2a9a2AnbLXl4NFgOpyTwx8Ah5RIROW0X5ls7f8TIPmjyN4YjYy3x/ZPV/K34C94HIKdJTZ0UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDktMjBUMTQ6Mjk6NDErMDI6MDC4vqD7AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA5LTIwVDE0OjI5OjQxKzAyOjAwyeMYRwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=")));
DiffuseMaterial3.Brush = ImageBrush1;
GeometryModel3D GeometryModel3D4 = new GeometryModel3D();
Model3DGroup2.Children.Add(GeometryModel3D4);
MeshGeometry3D1 = new MeshGeometry3D();
MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("1,1,1 1,-1,1 1,-1,-1 1,1,-1"));
MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
GeometryModel3D4.Geometry = MeshGeometry3D1;
DiffuseMaterial DiffuseMaterial4 = new DiffuseMaterial();
GeometryModel3D4.Material = DiffuseMaterial4;
ImageBrush1 = new ImageBrush();
ImageBrush1.ImageSource = BitmapFrame.Create(new System.IO.MemoryStream(Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfiCRQOHSnyc2vqAAAB00lEQVRIx93UvUtcURAF8FkVRRuJKQQlRlQUrCKKIIgYBEshIFiFiJ2F5Sadf8AiIthbxyqljbVgIQlYWMVqQRITP4iI+LG/NC/78dzImlTJVPeeOefMu3PvvIj/PQwa/Bt5hxs3Oh7i1D3o0B8N0RD9f25QQyQGxgw96nBDxsq3fShYvEebBJP38EUF9JWAVmfVLKobJPIzreXgqNNyCxldpq2CVdO6ZCrkp0bTnzWSWCyZseFYOo5tmLGUyEeqNWbYiVrixHBJ1VDmcB3n8SRZfYhPcRif4zAieqI3euJFvIrGiIg4j+tq9edcgCPL2qteXbtlR+DCXGWqXg7ceqvxwftvlHULcupL8Ar4ZqqmR/TSV7DyC5hSwL7uFHHMuh071iteXUR45iMKpiJCmzx+6K2g1Mm5K/b9Tk7F1HjuHHltYRPMp2pkE+m+/WSVTTFeg82Qx2Yq2e0KB8YjIow7wNW9I75HPkx4pymVmgcLxf0CeJNiNcmaqN7nNVxqKe5bXGKtGrf6D+VLRDRHaVz7ojlBazTYi4iI0nAvlqG1hHq7KNg2a9a2AnbLXl4NFgOpyTwx8Ah5RIROW0X5ls7f8TIPmjyN4YjYy3x/ZPV/K34C94HIKdJTZ0UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDktMjBUMTQ6Mjk6NDErMDI6MDC4vqD7AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA5LTIwVDE0OjI5OjQxKzAyOjAwyeMYRwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=")));
DiffuseMaterial4.Brush = ImageBrush1;
GeometryModel3D GeometryModel3D5 = new GeometryModel3D();
Model3DGroup2.Children.Add(GeometryModel3D5);
MeshGeometry3D1 = new MeshGeometry3D();
MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("1,1,-1 1,-1,-1 -1,-1,-1 -1,1,-1"));
MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
GeometryModel3D5.Geometry = MeshGeometry3D1;
DiffuseMaterial DiffuseMaterial5 = new DiffuseMaterial();
GeometryModel3D5.Material = DiffuseMaterial5;
ImageBrush1 = new ImageBrush();
ImageBrush1.ImageSource = BitmapFrame.Create(new System.IO.MemoryStream(Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfiCRQOHSnyc2vqAAAB00lEQVRIx93UvUtcURAF8FkVRRuJKQQlRlQUrCKKIIgYBEshIFiFiJ2F5Sadf8AiIthbxyqljbVgIQlYWMVqQRITP4iI+LG/NC/78dzImlTJVPeeOefMu3PvvIj/PQwa/Bt5hxs3Oh7i1D3o0B8N0RD9f25QQyQGxgw96nBDxsq3fShYvEebBJP38EUF9JWAVmfVLKobJPIzreXgqNNyCxldpq2CVdO6ZCrkp0bTnzWSWCyZseFYOo5tmLGUyEeqNWbYiVrixHBJ1VDmcB3n8SRZfYhPcRif4zAieqI3euJFvIrGiIg4j+tq9edcgCPL2qteXbtlR+DCXGWqXg7ceqvxwftvlHULcupL8Ar4ZqqmR/TSV7DyC5hSwL7uFHHMuh071iteXUR45iMKpiJCmzx+6K2g1Mm5K/b9Tk7F1HjuHHltYRPMp2pkE+m+/WSVTTFeg82Qx2Yq2e0KB8YjIow7wNW9I75HPkx4pymVmgcLxf0CeJNiNcmaqN7nNVxqKe5bXGKtGrf6D+VLRDRHaVz7ojlBazTYi4iI0nAvlqG1hHq7KNg2a9a2AnbLXl4NFgOpyTwx8Ah5RIROW0X5ls7f8TIPmjyN4YjYy3x/ZPV/K34C94HIKdJTZ0UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDktMjBUMTQ6Mjk6NDErMDI6MDC4vqD7AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA5LTIwVDE0OjI5OjQxKzAyOjAwyeMYRwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=")));
DiffuseMaterial5.Brush = ImageBrush1;
GeometryModel3D GeometryModel3D6 = new GeometryModel3D();
Model3DGroup2.Children.Add(GeometryModel3D6);
MeshGeometry3D1 = new MeshGeometry3D();
MeshGeometry3D1.Positions = ((Point3DCollection)new Point3DCollectionConverter().ConvertFromString("-1,1,1 -1,-1,1 1,-1,1 1,1,1"));
MeshGeometry3D1.TriangleIndices = ((Int32Collection)new Int32CollectionConverter().ConvertFromString("0,1,2 0,2,3"));
MeshGeometry3D1.TextureCoordinates = ((PointCollection)new PointCollectionConverter().ConvertFromString("0,0 0,1 1,1 1,0"));
GeometryModel3D6.Geometry = MeshGeometry3D1;
DiffuseMaterial DiffuseMaterial6 = new DiffuseMaterial();
GeometryModel3D6.Material = DiffuseMaterial6;
VisualBrush VisualBrush1 = new VisualBrush();
DiffuseMaterial6.Brush = VisualBrush1;
Button Button1 = new Button();
Button1.Content = "Click Me";
Button1.Click += Button1_Click;
VisualBrush1.Visual = Button1;
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hi everyone");
}
private void MakeCamera()
{
Transform3DGroup transform3DGroup = new Transform3DGroup();
RotateTransform3D rotateTransform3D_1 = new RotateTransform3D();
AxisAngleRotation3D axisAngleRotation3D_1 = new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0);
transform3DGroup.Children.Add(rotateTransform3D_1);
_perspectiveCamera = new PerspectiveCamera();
_perspectiveCamera.Position = new Point3D(0, 0, 5);
_perspectiveCamera.LookDirection = new Vector3D(0, 0, -5);
_perspectiveCamera.UpDirection = new Vector3D(0, 1, 0);
_perspectiveCamera.FieldOfView = 45;
_perspectiveCamera.Transform = transform3DGroup;
}
private DrawingBrush GetRectangleDrawingBrush()
{
DrawingBrush DrawingBrush1 = new DrawingBrush();
DrawingBrush1.Viewport = ((Rect)new RectConverter().ConvertFromString("0,0,0.25,0.25"));
DrawingBrush1.TileMode = TileMode.Tile;
DrawingGroup DrawingGroup1 = new DrawingGroup();
DrawingBrush1.Drawing = DrawingGroup1;
GeometryDrawing GeometryDrawing1 = new GeometryDrawing();
GeometryDrawing1.Brush = ((Brush)new BrushConverter().ConvertFromString("White"));
DrawingGroup1.Children.Add(GeometryDrawing1);
RectangleGeometry RectangleGeometry1 = new RectangleGeometry();
RectangleGeometry1.Rect = ((Rect)new RectConverter().ConvertFromString("0,0,100,100"));
GeometryDrawing1.Geometry = RectangleGeometry1;
GeometryDrawing GeometryDrawing2 = new GeometryDrawing();
DrawingGroup1.Children.Add(GeometryDrawing2);
GeometryGroup GeometryGroup1 = new GeometryGroup();
GeometryDrawing2.Geometry = GeometryGroup1;
RectangleGeometry1 = new RectangleGeometry();
RectangleGeometry1.Rect = ((Rect)new RectConverter().ConvertFromString("0,0,50,50"));
GeometryGroup1.Children.Add(RectangleGeometry1);
RectangleGeometry1 = new RectangleGeometry();
RectangleGeometry1.Rect = ((Rect)new RectConverter().ConvertFromString("50,50,50,50"));
GeometryGroup1.Children.Add(RectangleGeometry1);
LinearGradientBrush LinearGradientBrush1 = new LinearGradientBrush();
GeometryDrawing2.Brush = LinearGradientBrush1;
GradientStop GradientStop1 = new GradientStop();
GradientStop1.Offset = 0.0;
GradientStop1.Color = Colors.Black;
LinearGradientBrush1.GradientStops.Add(GradientStop1);
GradientStop1 = new GradientStop();
GradientStop1.Offset = 1.0;
GradientStop1.Color = Colors.Gray;
LinearGradientBrush1.GradientStops.Add(GradientStop1);
return DrawingBrush1;
}
void Viewport3D1_Loaded(object sender, RoutedEventArgs e)
{
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromSeconds(0.20);
_timer.Tick += new EventHandler(_timer_Tick);
_timer.IsEnabled = true;
}
void _timer_Tick(object sender, EventArgs e)
{
Transform3DGroup transform3DGroup = new Transform3DGroup();
RotateTransform3D rotateTransform3D_1 = new RotateTransform3D();
AxisAngleRotation3D axisAngleRotation3D_1 = new AxisAngleRotation3D(new Vector3D(0, 1, 0), _angle);
rotateTransform3D_1.Rotation = axisAngleRotation3D_1;
transform3DGroup.Children.Add(rotateTransform3D_1);
_perspectiveCamera.Transform = transform3DGroup;
_angle = _angle + 2;
}
}
}
4- Запустите этот проект и убедитесь, что куб wpf вращается правильно.
Но Button1_Click Событие не работает!
Итак, почему вы думаете, что Button1_Click событие не работает, когда я нажимаю Button1 ?
Заранее спасибо.