首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
CSharpGL 自定义控件
2024-10-30
CSharpGL(45)自制控件的思路
CSharpGL(45)自制控件的思路 +BIT祝威+悄悄在此留下版了个权的信息说: 本文介绍CSharpGL实现自制控件的方法. 所谓自制控件,就是用纯OpenGL模仿WinForm里的Button.Label.TextBox.CheckBox等控件,支持布局.修改大小和文字等功能. 如上图所示,左下角就是一个显示二维图片的类似PictureBox的控件,我称之为CtrlImage.(所有的CSharpGL自制控件类型,都继承自GLControl,都添加前缀Ctrl)CtrlImage上方分别
android自定义控件一站式入门
自定义控件 Android系统提供了一系列UI相关的类来帮助我们构造app的界面,以及完成交互的处理. 一般的,所有可以在窗口中被展示的UI对象类型,最终都是继承自View的类,这包括展示最终内容的非布局View子类和继承自ViewGroup的布局类. 其它的诸如Scroller.GestureDetector等android.view包下的辅助类简化了有关视图操作和交互处理. 无论如何,自己的app中总会遇到内建的类型无法满足要求的场景,这时就必须实现自己的UI组件了. 自定义控件的方式 根据
CSharpGL(33)使用uniform块来优化对uniform变量的读写
CSharpGL(33)使用uniform块来优化对uniform变量的读写 +BIT祝威+悄悄在此留下版了个权的信息说: Uniform块 如果shader程序变得比较复杂,那么其中用到的uniform变量数量也会上升.通常会在多个shader程序中用到同一个uniform变量.而uniform buffer object就是一种优化uniform变量访问,以及在不同的shader程序间共享uniform数据的方法. 写法 首先了解一下uniform块的写法. uniform b { // ‘
ASP.NET MVC学习之母版页和自定义控件的使用
一.母板页_Layout.cshtml类似于传统WebForm中的.master文件,起到页面整体框架重用的目地1.母板页代码预览 <!DOCTYPE html> <html> <head> <title>@ViewBag.Title</title> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" t
C# 自定义控件VS用户控件
1 自定义控件与用户控件区别 WinForm中, 用户控件(User Control):继承自 UserControl,主要用于开发 Container 控件,Container控件可以添加其他Controls控件 自定义控件(Custom Control):继承自 Control,主要用于开发windows控件的最基本的类,比如 Text,Button 控件 2 要开发自己的控件的几种方法[1] 复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满
自定义控件之 圆形 / 圆角 ImageView
一.问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在头像上不就完事了嘛,哈哈哈! 在背景纯色的前提下,这的确能简单解决问题,但是如果背景没有这么简单呢? 在这种不规则背景下,有两个问题: 1) 背景图常常是适应手机宽度缩放,而头像的尺寸又是固定宽高DP的,所以固定的蒙板图片是没法保证在不同机型上都和背景图案吻合的. 2) 在这种非纯色背景下,哪天想调
如何开发FineReport的自定义控件?
FineReport作为插件化开发的报表软件,有些特殊需求的功能需要自己开发,开发的插件包帆软官方有提提供,可以去帆软论坛上找,本文将主要介绍如何开发一个自定义控件,这里讲讲方法论. 第一步:实例化一个注册控件的接口 给四个信息 我们的控件类,界面类,图标路径,控件类型名字 package com.hg.free.plugin.customcombo.param; import com.fr.design.designer.creator.XComboBox; import com.fr.des
WPF自定义控件第二 - 转盘按钮控件
继之前那个控件,又做了一个原理差不多的控件.这个控件主要模仿百度贴吧WP版帖子浏览界面左下角那个弹出的按钮盘.希望对大家有帮助. 这个控件和之前的也差不多,为了不让大家白看,文章最后发干货. 由于这个控件和之前一篇文章介绍控件基本差不多,所以一些基本的实现点不再赘述,文本将主要介绍与这个控件功能密切相关的部分.开始正题. 剧透一下,博主后来又在WinRT(真不知道该叫什么好了,现在该叫它UWP吗?)中把这个控件实现了一遍,说起来WinRT与WPF还是有很大不同的,这个控件的实现方式也有很多不同之
CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果
CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果 开始 一图抵千言.首先来看鼠标拖动太阳(光源)的情形. 然后是鼠标拖拽旋转模型的情形. 然后我们移动摄像机来从不同的角度看看. 现在太阳(光源)跑到比较远的位置去了,我们再移动它试试看. 本文就介绍平行光下是如何实现漫反射和镜面反射的. 本文shader核心部分来自红宝书第八版. 光照 只需记住一点,用GLSL实现光照效果时,都是根据顶点的位置.法线方向.光源位置(方向).摄像机位置等等这些数据,根据
CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总
CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总 开始 总的来说,OpenGL应用开发者会遇到为如下三种数据创建Vertex Buffer Object的情形: 任意一个struct类型T data: 任意一个元素类型为struct的数组T[] array: 任意一个非托管数组UnmanagedArray<T> array: 而可创建的Vertex Buffer Object也分为如下的类别: 描述顶点属性(位置.颜色.法线等)的VertexBuffer
CSharpGL(37)创建和使用VBO的最佳方式
CSharpGL(37)创建和使用VBO的最佳方式 开始 近日在OpenGL红宝书上看到这样的讲解. 其核心意思是,在创建VBO时用 glBufferData(GL_ARRAY_BUFFER, length, NULL, GL_STATIC_DRAW); 来初始化buffer占用的内存(此内存在GPU端),其中的 NULL 表示并未初始化数据(即此buffer中的数据是随机值,类似在C语言中刚刚创建一个数组 ]; 的情况). 这样,就不必在CPU端申请大量内存了.接下来需要初始化buffer数据
CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray<T> 进行排序的几种方法. +BIT祝威+悄悄在此留下版了个权的信息说: UnmanagedArray<T> 首先重新介绍一下非托管数组这个东西.一个 UnmanagedArray<float> 与一个 float[] 是一样的用处,只不过 UnmanagedArray<f
CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口
CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口 开始 像下面这样的四个视口的功能是很常用的,所以我花了几天时间在CSharpGL中集成了这个功能. 在CSharpGL中的多视口效果如下.效果图是粗糙了些,但是已经实现了拖拽图元时4个视口同步更新的功能,算是一个3D模型编辑器的雏形了. 原理 ViewPort 多视口的任务,是在不同的区域用不同的摄像机渲染同一个场景.这个“区域”我们称其为 ViewPort .(实际上 ViewPort 是强化版的 gl
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使用CSharpGL渲染一个Klein Bottle,从而得到下图所示的图形.你会看到这并不困难. +BIT祝威+悄悄在此留下版了个权的信息说: 用Modern OpenGL渲染 在Modern OpenGL中,shader是在GPU上执行的程序,用于计算图形最终的样子:模型则提供顶点数据给shade
CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换
CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换 三维世界里的旋转(rotate),可以用一个3x3的矩阵描述:可以用(旋转角度float+旋转轴vec3)描述.数学家欧拉证明了这两种形式可以相互转化,且多次地旋转可以归结为一次旋转.这实际上就是著名的轨迹球(arcball)方式操纵模型的理论基础. 本文中都设定float angleDegree为旋转角度,vec3 axis为旋转轴. +BIT祝威+悄悄在此留下版了个权的信息说: 四元数 +BIT祝威+悄悄在此留下版了个权的信息说:
CSharpGL(31)[译]OpenGL渲染管道那些事
CSharpGL(31)[译]OpenGL渲染管道那些事 +BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一个不错的突破口. 本文通过阅读.翻译和扩展(https://www.opengl.org/wiki/Rendering_Pipeline_Overview)的方式,来逐步回顾总结一下OpenGL渲染管道,从而串联起OpenGL的所有知识点,并期望能在更高的层次上有所领悟. 另外,(https://w
CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率
CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率 当场景中有比较复杂的模型时,条件渲染能够加速对复杂模型的渲染. 条件渲染(Conditional Rendering) 当我们能够断定一个模型被其他模型挡住(因此不会被Camera看到)时,我们就可以跳过对此模型的渲染.这就是条件渲染的根本. 那么如何去判断?方法就是用一个简单的包围盒(比如一个立方体)去渲染一下,看看fragment是不是有变化(即包围盒上的某些部分通过了depth t
CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffer Texture和Framebuffer是OpenGL进行3D渲染高级效果必不可少的利器.有了Texture和Framebuffer就可以实现体渲染(Volume Rendering)等效果.现在到了对Texture和Framebuffer的创建.修改.使用进行封装的时候. +BIT祝威+悄悄在此
CSharpGL(28)得到高精度可定制字形贴图的极简方法
CSharpGL(28)得到高精度可定制字形贴图的极简方法 回顾 以前我用SharpFont实现了解析TTF文件从而获取字形贴图的功能,并最终实现了用OpenGL渲染文字. 使用SharpFont,美中不足的是: SharpFont太大了,有上千行代码,且逻辑复杂难懂. SharpFont画出的字形精度有限,虽然也很高,但是确实有限.用OpenGL渲染出来后会发现边缘不是特别清晰. SharpFont对加粗.斜体.下划线.删除线如何支持,能否支持?完全不知道. Graphics+Font 最近我
CSharpGL(27)讲讲清楚OpenGL坐标变换
CSharpGL(27)讲讲清楚OpenGL坐标变换 在理解OpenGL的坐标变换问题的路上,有好几个难点和易错点.且OpenGL秉持着程序难以调试.难点互相纠缠的特色,更让人迷惑.本文依序整理出关于OpenGL坐标变换的各个知识点.隐藏规则.诀窍和注意事项. +BIT祝威+悄悄在此留下版了个权的信息说: Matrix OpenGL用4x4矩阵进行坐标变换. OpenGL的4x4矩阵是按列排列的. 忘记glRotatef(),glScalef(),glTranslatef()什么的吧,那都属于l
CSharpGL(26)在opengl中实现控件布局/渲染文字
CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入(https://github.com/bitzhuwei/CSharpGL) UI控件布局关键点 ILayout 类似Winform控件那样,控件的位置.大小由其Anchor等属性决定.窗口大小改变时,控件的位置.大小会随之改变. 所以模仿Control类,直接使用Anchor作为UIRendere
热门专题
simhash算法去重
eclipse 右键点jar就卡住
dataframe按指定列求和 新行
nginx 优化图片加载速度
setCharacterEncoding需要引入什么包
前端传0 后端实体接受不到 java
整数n拆成平方数的和 java
django 网站开发
git pull更新不到最新代码
php操作oracle数据库(增删改查)
angular获取输入数字的两倍
mongodb通过内嵌数组排序
qt5.8.0安装包 pan.baidu
c指针详解经典非常详细
edge浏览器的session生命周期
md中包路径层级语法
cesium ImageryLayer 透明度
python的map存储数据
QEMU虚拟mips
cdinux测试机破解密码