WPF create Flower shape
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.Navigation;
using System.Windows.Shapes; namespace WpfMosaic
{
/// <summary>
/// Interaction logic for FlowerShape.xaml
/// </summary>
public class FlowerShape : Grid
{
/// <summary>
///
/// </summary>
/// <param name="count"></param>
public FlowerShape(int count)
{
Width = Height = 100;
Background = new SolidColorBrush(Colors.Black);
var strokeBrush= new SolidColorBrush(Colors.White);
this.Children.Clear();
var bg = new SolidColorBrush(Color.FromArgb(255, (byte)Utils.rnd.Next(0, 256), (byte)Utils.rnd.Next(0, 256), (byte)Utils.rnd.Next(0, 256)));
var width = Utils.rnd.Next(10, 51);
for (int i = 0; i < count; i++)
{
var angle = i * (360 / count);
var transGroup = new TransformGroup();
transGroup.Children.Add(new RotateTransform() { Angle = angle });
this.Children.Add(new Ellipse()
{
StrokeThickness = 1, Stroke = strokeBrush,
Margin = new Thickness(0, 0, 0, 50),
Fill = bg,
Width = width,
RenderTransformOrigin = new Point(0.5, 1)
,
RenderTransform = transGroup }); ; ; ; } } }
}
void TesCreateShapes() {
canvas.Children.Clear();
for (int i = 0; i < 100; i++)
{
var shap = new FlowerShape(12){ };
canvas.Children.Add(shap );
}
canvas.UpdateLayout();
return;
foreach (FrameworkElement shap in canvas.Children)
{
UISaveToPng(shap, @"C:\Users\gwang\Pictures\Mosaic\" + DateTime.Now.ToFileTime() + ".png");
}
Title = "done.";
}
void UISaveToPng(FrameworkElement ui, string fileName)
{
int width = (int)ui.ActualWidth;
int height = (int)ui.ActualHeight;
RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
bmp.Render(ui);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
encoder.Save(fs);
fs.Close();
}
}
WPF create Flower shape的更多相关文章
- WPF 2D图形 Shape入门(一)--Shape
本文是篇WPF Shape的入门文章 Shape 首先看看shape的继承链关系: 一个Shape具有哪些重要属性: 属性 说明 DefiningGeometry 默认的几何形状 RenderedGe ...
- WPF Input Validation Using MVVM
Data validation is a key part in WPF.Validation is used to alert the user that the data he entered i ...
- 使用WPF创建画图箭头
原文:使用WPF创建画图箭头 今天要给leader line画个箭头,所以就google一下,找到下面的文章,写的不错,可以实现我的需求,所以就摘录下来. 我把源代码中的arraw.cs加入到我的工程 ...
- Object.create 函数 (JavaScript)
创建一个具有指定原型且可选择性地包含指定属性的对象. 语法 Object.create(prototype, descriptors) 参数 prototype 必需. 要用作原型的对象. 可以为 ...
- (WPF) MVVM: 动态添加控件及绑定。
比如需要显示一个键盘,里面有各个按键.实现的效果如下: 之前的思路,就是建立一个singleKey的控件,然后在后台用代码动态的添加到父控件里去, 再用代码在后台进行绑定. 这种实现方法并不是真正的M ...
- (转)es6中object.create()和object.assign()
今天学习javascript面向对象,在学习Obejct方法时了解到create方法,偶像想起之前使用的assign方法,顺带查找一番,感觉这篇博客讲解详细,遂转载. 先简单提一下装饰器函数,许多面向 ...
- WPF 字体描边的实现方式
原文:WPF 字体描边的实现方式 <local:TextPath x:Name="PathEdge" Fill="Red" Stroke=" ...
- PHP执行文档操作
1.POWINTPOINT系列 之前参与过一个商城的项目,里面有将excel 导出的功能,但是如果要弄成PPT的我们应该怎么办呢?PHP是属于服务器端的 总不能在里面装个Powintpoint吧.于是 ...
- python设计模式
本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复 ...
- HTML5资料
1 Canvas教程 <canvas>是一个新的用于通过脚本(通常是JavaScript)绘图的HTML元素.例如,他可以用于绘图.制作图片的组合或者简单的动画(当然并不那么简单).It ...
随机推荐
- Air780E软件指南:UDP应用示例
一.UDP概述 UDP(用户数据报协议,UserDatagramProtocol)是一种无连接的.不可靠的传输层协议,主要用于实现网络中的快速通讯.以下是UDP通讯的主要特点: 1.1 无连接通讯: ...
- vue2-基础核心
vue简介 vue中文官网 动态构建用户界面的渐进式 JavaScript 框架 vue的特点: 遵循MVVM模式 采用组件化模式,提高代码复用率,让代码更好维护 声明式编码,无需直接操作DOM,提高 ...
- Codeforces Round 891 (div.3) D题解析
CodeForces Round 898 (div 4) D题.Strong Vertices 大致思路 对于题目的给的式子,au-av>=bu-bv,我们可以通过移项得到au-bu>=a ...
- .NET +Vue 开发的高级报表工具
前言 本文介绍一款基于 .NET 6 开发的高级报表工具.该工具支持多种数据源(如数据库.Excel 文件.API 服务等),并具备强大的数据处理和可视化功能.通过内置的集合函数和类 Excel 界面 ...
- 读书笔记-C#8.0本质论-04
18. 多线程 18.1 多线程基础 处理器受限延迟(Processor-bound latency):假定一个计算需要执行120亿次算术运算,而总共的处理能力是每秒60亿次,那么从请求结果到获得结果 ...
- pikachu平台暴力破解详解
声明:文章只是起演示作用,所有涉及的网站和内容,仅供大家学习交流,如有任何违法行为,均和本人无关,切勿触碰法律底线. 文章来自个人csdn博客,感兴趣的可以关注一下,https://blog.csdn ...
- Nuxt.js 应用中的 render:island 事件钩子
title: Nuxt.js 应用中的 render:island 事件钩子 date: 2024/12/1 updated: 2024/12/1 author: cmdragon excerpt: ...
- Business Object 开发
一 什么是BO BO(Business Object),封装在数据库之上,用于直接操作数据(增.删.改.查) 针对不同的BO,在安装目录下有对应的DLL文件,其中封装了BO各式针对具体的业务的方法, ...
- JAVA中ScheduledExecutorService的使用方法
ScheduledExecutorService 简介 ScheduledExecutorService是 Java 中的一个接口,它是ExecutorService的子接口.它主要用于在给定的延迟之 ...
- 【分块】LibreOJ 6279 数列分块入门3
题目 https://loj.ac/p/6279 题解 将 \(n\) 个元素的数组 \(a\) 按块长 \(\sqrt{n}\) 进行分块处理.为每个块设置一个懒添加标记 \(add[i]\),代表 ...