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 ...
随机推荐
- P2540 [NOIP2015 提高组] 斗地主 加强版
简要题意 给你一副手牌,求最少的次数出完所有手牌.(按照它给出的规定出) 题目 分析 因为求最小次数直接贪心很明显是错的,但又直接写不出 \(dp\) 的式子,所以我们只能够爆搜所有情况,但这样明显会 ...
- 开源一款AI聊天工具
学习Spring AI项目,开发一款问答工具 AI大模型请注册并生成API密钥 获取API密钥地址:https://bigmodel.cn/console/overview 开源地址:LuckyAI ...
- java通过SSE实现消息推送
一.什么是SSE 严格地说,HTTP 协议无法做到服务器主动推送信息.但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming). 也就是说,发送的不是一次性的数据包, ...
- LeetCode128 最长连续序列
最长连续序列 题目链接:LeetCode128 描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法 ...
- 深入Log4J源码之Log4J Core
毕业又赶上本科的同学会,还去骑车环了趟崇明岛,六月貌似就没消停过,不过终于这些事情基本上都结束了,我也可以好好的看些书.读些源码.写点博客了. Log4J将写日志功能抽象成七个核心类/接口:Logge ...
- vue之vuex使用
如图所示,它是一个程序里面的状态管理模式,它是集中式存储所有组件的状态的小仓库,并且保持我们存储的状态以一种可以预测的方式发生变化.对于可以预测,现在我不多做说明,相信在看完这篇文章之后,你就会有自己 ...
- highcharts中的仪表盘样式
仪表盘的样式如下: 是双表盘展示 左边的图中minorTickInterval的值为null,右边的minorTickInterval的值为"auto" 左边的图中lineColo ...
- 论文泛读《T-Miner: A Generative Approach to Defend Against Trojan Attacks on DNN-based Text Classification》
发表时间:2021 期刊会议:30th USENIX Security Symposium 论文单位:Virginia Tech 论文作者:Ahmadreza Azizi,Ibrahim Asadul ...
- Litctf2024-郑州轻工业大学第二届ctf-校内赛道wp
战队:怎落笔都不对 最终成绩校内第4 MISC 1. 盯帧珍珠 打开文件发现是一个图片,放入 010 查看得文件头是 gif 格式 改为gif后缀得到一个GIF图,在下面这个网站分解,即可得到flag ...
- C# 企业微信消息推送对接,实现天气预报推送
C# 企业微信消息推送对接,实现天气预报推送 迷恋自留地 准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最 ...