首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# 从零开始写 SharpDx 应用 绘制基础图形

的默认线条宽度,通过下面代码可以设置默认线条宽度 _d2dRenderTarget.StrokeWidth = 10; 圆角矩形可以使用 DrawRoundedRectangle...geometrySink.Close(); 在 PathGeometry 使用 Open 方法返回 GeometrySink 可以支持很多绘制,包括组合多个几何 文字 绘制文字需要 SharpDX.DirectWrite.Factory...需要先创建才能使用,注意工厂需要只创建一次 var factory = new SharpDX.DirectWrite.Factory(); 创建工厂可以用来实例文本格式 var...= new TextFormat(factory, "宋体", 20); 在 TextFormat 构造函数可以传入很多参数,用于绘制 绘制文本需要使用 DrawText 方法,在这个方法传入需要绘制的字符串和文本格式...var factory = new SharpDX.DirectWrite.Factory(); var textFormat = new TextFormat

2.4K10

OC中获取一串字符串的高度(宽度确定)或宽度(高度确定)

https://blog.csdn.net/u010105969/article/details/52937475 项目中我们有时会需要根据字符串来确定UILabel的宽度或高度,如我们经常遇到的单元格自适应问题...如果是要动态知道UILabel的高度,那么我们直接利用单元格自适应高度就可以。如果我们要获取UILabel的宽度(为什么要获取UILabel的宽度?...因为有时如果字符串过长那么UILabel的宽度就会相应发生变化),那么就可以利用下面的方法: CGSize size = [string sizeWithFont:font constrainedToSize...:CGSizeMake(MAXFLOAT, 17)];  CGFloat w =size.width; 其实这个方法只是先获取字符串(字符串的字体大小是确定了的)的size再确定其宽度。...从方法中可以看出我们固定了字符串的高度为17,如果想要获取字符串的高度,那么固定宽度就好了。

2.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF 使用 SharpDX

    显示 WPF 使用封装的 SharpDx 控件 WPF 使用 SharpDx 异步渲染 先介绍一下 SharpDx ,一个底层封装的 DirectX 库,支持 AnyCpu ,支持 Direct3D9...环境 需要 .NET 4.5 和以上的环境才可以使用。 安装 首先安装 SharpDX 的库,需要安装下面几个库 ?...先引用命名 using D2D = SharpDX.Direct2D1; using WIC = SharpDX.WIC; using DW = SharpDX.DirectWrite; using DXGI...PixelFormat 使用 B8G8R8A8_UNorm 的意思是每个元素包含4个8位无符号分量,分量的取值范围在[0,1]区间内的浮点数,因为不是任何类型的数据都能存储到纹理中的,纹理只支持特定格式的数据存储...这里的 BGRA 的意思分别是 蓝色(Blue)、绿色(Green)、红色(Red)和 alpha(透明度),其他可以选的格式 DXGI_FORMAT_R32G32B32_FLOAT:每个元素包含3个32

    1.3K10

    WPF 获取本机所有字体拿到每个字符的宽度和高度

    本文主要采用 GlyphTypeface 类尝试获取每个字符的宽度和高度的值,尽管这个方法和最终 WPF 布局使用的文本的宽度和高度是不相同的,但是依然可以作为参考 获取系统字体文件夹的文件 系统字体文件夹放在...var uri = new Uri(font); GlyphTypeface g = new GlyphTypeface(uri); } 获取定义的字符的宽度和高度比例...w 和 h 就是宽度和高度比例 ?...注意,这个值和最终文本渲染字符大小没有很本质的关系 以下是我提供的一些测试的值,我隐藏了最终渲染字符的大小计算方法,此方法是团队内部 文本框3.0 计算方法,此库可以做出比 PPT 文本框差的多的效果...glyph 就可以使用和上文相同的方法获取文本字符宽度

    2.1K20

    WPF SharpDx 性能优化方法

    本文记录一些通用的 SharpDx 的性能优化方法 本文属于 SharpDx 系列 博客,建议从头开始读 不要监听 ContentRendered 事件 监听了 Window 的 ContentRendered...,也就是告诉 SharpDx 应该画点还是画线的逻辑,在这个逻辑里面耦合了业务逻辑,业务逻辑本身的耗时将会让 SharpDx 的收集绘制指令的性能降低 _renderTarget.BeginDraw()...,可选方案是让这部分代码先执行,执行完成之后再执行 SharpDx 的绘制逻辑 另一个方法就是让业务代码在另一个线程执行 这部分和具体业务相关 减少绘制数量 尽管使用 SharpDx 的绘制效率很高,但是假定需要执行的绘制命令特别多...,此时也会降低性能,因此我的一个性能比较强的应用就预先计算出某些命令不会在界面可见,这部分就不参与渲染 如以下代码,这里的代码将会很多次的获取椭圆渲染 _renderTarget.BeginDraw()...但是这不是说 jpg 的比 png 的好,因为影响图片的渲染性能有很多,如图片 dpi 和图片大小等 假设某些图片不关注透明等,同时这些图片是可以预先制作的,那么优先选 jpg 格式

    91330

    WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本

    CharacterToGlyphMap 获取对应的值 var text = "林德熙abc123ATdVACC"; List glyphIndices = new List字符来说,每个字符的 AdvanceWidths 对应的值都应该是相同的。...对于非等宽字符,可以在特殊排版需求的时候,强行设置为等宽的值 字符都是等比的,因此只需要设置宽度即可,设置字宽等于设置字号 设置字体偏移 在 GlyphRun 的高级用法里面,是允许设置文字的偏移量。...在创建时不会用到任何非托管的资源,只是一个对象而已 只有在被绘制的时候,才会申请 DirectWrite 的相关资源 获取几何对象 通过 BuildGeometry 方法可以从 GlyphRun 对象创建几何对象...如字体比较小的时候,将会删减一些笔画等 获取文本的渲染尺寸 可以通过如下代码获取文本的渲染尺寸,也可以通过如下方法获取单个字符的渲染尺寸 var computeInkBoundingBox = glyphRun.ComputeInkBoundingBox

    1.7K10

    dotnet 从入门到放弃的 500 篇文章合集

    转 Markdown C# Find vs FirstOrDefault C# TextBlock 上标 C# 代码占用的空间 C# 使用Emit深克隆 C# 判断文件编码 C# 字符串首字符大写 C...win10 uwp 使用 Geometry resources 在 xaml win10 uwp 使用 LayoutTransformer win10 uwp 使用动画修改 Grid column 的宽度...绘制基本图形 WPF 使用 Direct2D1 画图 wpf 使用 Dispatcher.Invoke 冻结窗口 WPF 使用 SharpDX 在 D3DImage 显示 WPF 使用 SharpDx...异步渲染 WPF 使用 SharpDX WPF 使用RPC调用其他进程 WPF 使用不安全代码快速从数组转 WriteableBitmap WPF 使用封装的 SharpDx 控件 WPF 修改按钮按下的颜色...上传代码 CodePlex 为何 987654321 123456789 的值是 8.0000000729 为何使用 DirectComposition 产品经理——做一个自己的系统 从以前的项目格式迁移到

    10.5K20

    dotnet C# 使用 Vortice 支持 Direct2D1 离屏渲染

    调用 DirectX 系列博客,也属于 DirectX 系列博客,本文属于入门级博客,但在阅读本文之前,期望大家了解了 DirectX 的基础概念 本文使用的 Vortice 是 SharpDx 的代替品...尽管本文使用的是 Vortice 库来调用 DirectX 相关的接口,但不代表着只有 Vortice 库能做此实现,可以将 Vortice 换成其他的对 DirectX 封装的库,例如 SharpDx...颜色格式里面只有一些是 D2D 支持的,本文这里采用常用的 PixelFormat32bppPBGRA 格式 using IWICBitmap wicBitmap =...github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init...,进入 WakolerwhaKanicabirem 文件夹 渲染部分,关于 SharpDx 使用,包括入门级教程,请参阅: WPF 使用 SharpDx 渲染博客导航 SharpDX 系列

    58030

    C# 从零开始写 SharpDx 应用 画三角

    在当前的画面都是使用三角形,在开始就告诉大家如何画三角,本文告诉大家如何用像素著色器画 本文是 SharpDX 系列博客,更多博客请点击SharpDX 系列 在 C# 从零开始写 SharpDx 应用...,如果使用的是 VisualStudio 2017 格式,那么复制下面代码放在项目 SharpDX.Mathematics" Version...="3.1.1" /> 如果不是就打开 Nuget 安装 SharpDX.Mathematics ,安装之后引用using SharpDX就可以使用这个类 顶点缓存 现在的顶点信息放在了内存,因为使用了上面代码创建...POSITION 可以在 shader 的代码被识别,这个字符串就是语义,用于匹配输入的材质的签名。...在刚才的初始化函数获取签名,通过编译的代码 // 其他被忽略的代码 private void InitializeShaders() {

    1.2K00

    WPF 使用 Silk.NET 进行 DirectX 渲染入门

    WPF 使用 SharpDx 渲染博客导航 当前 SharpDx 已不维护,我正在找代替的项目,详细请看 SharpDx 的代替项目 刚好找到了 dotnet 基金会下的 Silk.NET 库,此库是新写的...以上参数差不多是固定写法,各个参数的细节请看 DirectX 官方文档 接下来通过 D3D11 类型的 GetApi 方法获取 D3D11 对象,此对象的获取是 Silk.NET 的封装,不属于 DirectX...的啦,当前 Silk.NET 还没有封装好 D2D 部分,于是这里就和 WPF 使用 SharpDX 博客的方法差不多,只是创建 SharpDX 的 Surface 代码稍微修改而已...创建 D3D9 设备 通过 D3D9 设备,使用共享指针创建纹理,通过纹理获取平面 获取共享指针是为了让 D3D9 的纹理共享 D3D11 的资源,获取代码如下 DXGI.IDXGIResource...D3D9 类的 GetApi 对象获取 D3D9 对象。

    3.1K40

    人工智能(python)开发 —— 字符串(str)

    、字符串方法、格式化字符串及占位符等 1、字符串 str     作用:用来记录文本信息    序列的概念:字符串是序列的一种     表示方法:            在非注释中,凡是用引号括起来的部分都是字符串...S.isspace()判断字符串是否全为空白字符S.center(width[,fill])将原字符串居中,左右默认填充空格S.count(sub[, start[,end]])获取一个字符串中子串的个数...S.find(sub[, start[,end]])获取字符串中子串sub的索引,失败返回-1S.strip()返回去掉左右空白字符的字符串S.lstrip()返回去掉左侧空白字符的字符串S.rstrip...(E大写),如2.9E+10%f, %F浮点十进制形式%g, %G十进制形式浮点或指数浮点自动转换%%等同于一个%字符 14、占位符和类型码之间的格式语法          格式:                    ...                    0      左侧空白位置补零                     宽度: 整个数据输入的宽度                     精度: 保留小数点后多少位

    97500

    4-字符串

    \r 回车 \f 换页 \oyy 八进制数,yy代表的字符,例如:\o12代表换行 \xyy 十六进制数,yy代表的字符,例如:\x0a代表换行 \other 其它的字符以普通格式输出 字符串格式化...python中的格式化符号: 符 号 描述 %c 格式化字符及其ASCII码 %s 格式化字符串 %d 格式化整数 %u 格式化无符号整型 %o 格式化无符号八进制数 %x 格式化无符号十六进制数...字段宽度和精度 字段宽度是转换后的值保留的最小字符个数,精度是数字转换结果中应该包含的小数位数或字符串转换后的值所能包含的最大字符个数。...() 转换 mystr 中所有大写字符为小写 >>>str='Abc' >>>str.lower() 'abc' upper() mystr.upper() 转换 mystr 中的小写字母为大写...>>>a='---abc--' >>>a.strip('-') 'abc' lstrip() mystr.lstrip() 删除 mystr 左边的空白字符 ?

    62130

    C++格式化输入输出

    C++格式化输入输出用到的是cstdio中的scanf和printf函数,这对于我们从输入的数据中获取我们想要的信息很有帮助。(啊感觉这不就是对输入的信息进行了正则匹配吗?)...: a=1234,b=5678 %s格式符的使用 %s是匹配字符串的意思 #include int main() { char st[40]; scanf("%s", st); printf...("Your input is:%s\n", st); } 当我们输入abc hello时,程序将会输出 Your input is:abc 我们发现,它并没有匹配hello,那么scanf的%s匹配应该是到空格就停止了...,整数部分按实际位数输出,6位小数 %m.nf 总位数m(含小数点),其中有n位小数 %-m.nf 同上,左对齐 参数 说明 %s 按实际宽度输出一个字符串 %ms m指定宽度(不足时补空格,大于时按实际宽度输出...) %-ms 左对齐,不足时右补空格 %m.ns 输出占m个字符位置,其中字符数最多n个,左补空格 %-m.ns 同上,右补空格

    62430

    Python字符串(str)功能详细分析

    %s 字符串   代码演示:   #6.格式化输出 num = 10 string1 = "hello" print("string1=",string1,"num=",num) #注意:变量的书写顺序尽量和前面字符串中出现的顺序保持一致...6.1获取长度和次数   代码演示:   #1.计算字符串长度  len #类似于list和tuple的中获取长度的用法 str1 = "hfufhja" l = len(str1) print(l)...   int:将字符串转换为整型】 6.4填充   代码演示:   #5.填充 #center(width[,fillchar])  返回一个指定宽度的居中字符串,width是填充之后整个字符串的长度,...[,fillchar]) 返回一个指定宽度的字符串,将原字符串居左对齐,width是填充之后整个字符串的长度 print(str1.ljust(40,"%")) #rjust width[,fillchar...])  返回一个指定宽度的字符串,将原字符串居右对齐,width是填充之后整个字符串的长度 print(str1.rjust(40,"%")) #zfill(width)   返回一个指定宽度的字符串,

    61420
    领券