BS版图形系统 - Ribbon Gallery

wxRibbonGallery类介绍及使用方法 总结:本文详细介绍了wxRibbonGallery类的使用方法,并通过一个简单的示例帮助开发者更好地理解该类。无论您是初学者还是有一定经验的开发者,都可以通过本文掌握wxRibbonGallery的相关技术,为您的应用程序提供更好的用户体验。此外,wxRibbonGallery还支持多种不同的布局方式和样式,开发者可以根据自己的需求进行选择,详见官方文档。用于设置当前选中的项,参数为要设置的项的索引号,0表示第一项,-1表示没有任何项被选中。用于获取当前选中的项的索引号,如果没有任何项被选中,则返回-1。 阅读详情


今天尝试做一个Ribbon Gallery效果
直接参考PPT效果
在这里插入图片描述
当然,感觉在网页里,占用空间少一些好,所以把各图标间距整小一点。

图标准备

在这里插入图片描述

实现

export class TRibbonGallery extends TPanel {
    rightPanel: TPanel;
    btnUp: TButton;
    btnMid: TButton;
    btnDown: TButton;
    btnItems: TButton[]
    showAllFlag: boolean;
    constructor(parent: TContainer | null) {
        super(parent);
        this.rightPanel = new TPanel(this);
        this.rightPanel.Width = 13;
        this.rightPanel.Align = NAlign.Right;
        this.btnUp = new TButton(this.rightPanel);
        this.btnUp.ApplyXml(`BoundRect="0, 0, 15, 20" iconOffset="2" Transparent="true" Icon="Icon/Up.png" Tag="0"`);
        this.btnMid = new TButton(this.rightPanel);
        this.btnMid.ApplyXml(`BoundRect="0, 20, 15, 20" iconOffset="2" Transparent="true" Icon="Icon/Down.png" Tag="1" `);
        this.btnDown = new TButton(this.rightPanel);
        this.btnDown.ApplyXml(`BoundRect="0, 40, 15, 20" iconOffset="2" Transparent="true" Icon="Icon/Down1.png" Tag="2" `);
        this.btnUp.AddEvent(NControlEvent.OnClick, this.onBtnClick, this);
        this.btnMid.AddEvent(NControlEvent.OnClick, this.onBtnClick, this);
        this.btnDown.AddEvent(NControlEvent.OnClick, this.onBtnClick, this);
        this.btnItems = [];
        this.showAllFlag = false;
    }

    private _btnRowIndex: number = 0;
    get btnRowIndex(): number { return this._btnRowIndex; }
    set btnRowIndex(value: number) {
        value = DrGraph.HelperObject.RANGE_CAST(value, 0, this.btnRowCount - 1);
        this._btnRowIndex = value;

        let btnWidth = 60;
        let count = Math.floor((this.Width - this.rightPanel.Width) / btnWidth);
        let left = 0;
        this.btnItems.forEach((btn, idx) => {
            if (Math.floor(idx / count) == this._btnRowIndex) {
                btn.Left = left;
                btn.Top = 0;
                left += btnWidth;
            } else
                btn.Left = 10000;
        })
    }

    get btnRowCount() {
        let btnWidth = 50;
        let count = Math.floor((this.Width - this.rightPanel.Width) / btnWidth);
        let result = Math.ceil(this.btnItems.length / count);
        return result;
    }

    draw(): boolean {
        let ctx: CanvasRenderingContext2D = this.paintBox!.ctx!;
        super.doDraw(ctx);
        ctx = this.prepareGDI()!;
        this.rightPanel.draw();

        let btnWidth = 50;
        let count = Math.floor((this.Width - this.rightPanel.Width) / btnWidth);
        let left = 0;
        this.btnItems.forEach((btn, idx) => { btn.doDraw(ctx); })
        return true;
    }
}

资源配置

基于通用性,各项可以由xml进行配置,以便后续使用方便。

<?xml version='1.0' encoding='gb2312' ?>
<xml desc="UI Control Config by DrGraph">
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani01.png" Caption="出现" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani02.png" Caption="淡出" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani03.png" Caption="飞入" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani04.png" Caption="浮出" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani05.png" Caption="劈裂" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani06.png" Caption="擦除" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani07.png" Caption="形状" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani08.png" Caption="轮子" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani09.png" Caption="随机线条" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani10.png" Caption="翻转靠近" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani11.png" Caption="缩放" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani12.png" Caption="旋转" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani13.png" Caption="弹跳" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani14.png" Caption="脉冲" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani15.png" Caption="彩色脉冲" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani16.png" Caption="跷跷板" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani17.png" Caption="陀螺旋" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani18.png" Caption="缩放" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani19.png" Caption="不饱和" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani20.png" Caption="加深" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani21.png" Caption="变淡" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani22.png" Caption="透明" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani23.png" Caption="对象颜色" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani24.png" Caption="补色" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani25.png" Caption="线条颜色" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani26.png" Caption="填充颜色" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani27.png" Caption="画笔颜色" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani28.png" Caption="字体颜色" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani29.png" Caption="下划线" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani30.png" Caption="加粗闪烁" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani31.png" Caption="加粗展示" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani32.png" Caption="波浪形" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani33.png" Caption="消失" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani34.png" Caption="淡出" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani35.png" Caption="飞出" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani36.png" Caption="浮出" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani37.png" Caption="劈裂" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani38.png" Caption="擦除" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani39.png" Caption="形状" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani40.png" Caption="轮子" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani41.png" Caption="随机线条" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani42.png" Caption="收缩旋转" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani43.png" Caption="缩放" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani44.png" Caption="旋转" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani45.png" Caption="弹跳" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani46.png" Caption="直线" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani47.png" Caption="弧形" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani48.png" Caption="转弯" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani49.png" Caption="形状" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani50.png" Caption="循环" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani51.png" Caption="自定义" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
	<TButton Transparent="true" Width="40" Height="50" Icon="Icon/32x32/ani52.png" Caption="跑马灯" glyphPos="Top" Font.Size="13" iconTextDistance="15"/>
</xml>

初步效果

在这里插入图片描述

上下箭头按钮处理

  • 添加事件
        this.btnUp.AddEvent(NControlEvent.OnClick, this.onBtnClick, this);
        this.btnMid.AddEvent(NControlEvent.OnClick, this.onBtnClick, this);
        this.btnDown.AddEvent(NControlEvent.OnClick, this.onBtnClick, this);
  • 事件响应
    onBtnClick(event: TMessage) {
        let tag = event.sender.Tag;
        if (2 == tag)
            this.showAllFlag = !this.showAllFlag;
        if (0 == tag)
            this.btnRowIndex = this.btnRowIndex - 1;
        if (1 == tag)
            this.btnRowIndex = this.btnRowIndex + 1;
    }

在这里插入图片描述

下一步工作

  • 处理扩展按钮
  • 分组
Ribbon Gallery Icon上面实现右键菜单 Ribbon的代码例子很少,很多东西都要自己专研。这个示例代码实现了Ribbon界面中Gallery图标上面点击右键,显示菜单的示例代码。其中很多细节还是挺搞的。 立即下载

相关推荐

VS MFC完成的ribbon元素GDI绘图程序

MFC应用程序,具有office式样的单文档应用程序实例。 ribbon功能区创建,GDI绘图实现。 程序代码。

Ribbon界面介绍

http://hi.baidu.com/hoping/item/b257e10e99ed7312cd34ea1d Ribbons Ribbon是现代化的方式帮助用户高效和直接的查找、理解和使用工具命令——通过最少的点击,减少从“尝试-错误”(trainl-and-error)方式中恢复操作,寻找新的操作的需要,并且不再需要区查看软件帮助。   Ribbon是一种命令工具

风轻云淡 勇往直前 7165

东方通TongWeb虚拟主机配置全流程:从创建到应用部署的保姆级教程

本文提供东方通TongWeb虚拟主机从创建、HTTP通道配置到应用部署的完整实战指南。重点解析虚拟主机的逻辑隔离价值、通道参数调优原理及企业级多应用部署架构,并涵盖常见报错排查与性能优化建议,旨在帮助运维和开发人员高效、稳定地完成应用系统部署。

oil88的博客 532

细品RibbonX(26):库(Gallery)控件详解

细品RibbonX(26):库(Gallery)控件详解资料整理来自于论坛完整版下载地址:http://download.youkuaiyun.com/download/nodeman/10264659 Loading ... 下面介绍如何使用库,Office 2007用户界面中最酷的新功能之一。库被设计作为图形化显示用户选项的一种方式,例如样式库,能够通过查看该样式图形化的呈现使用户选择一种样式。可以使用库...

狂奔之林的博客 2818

[特殊字符]交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

🚦交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

cver123的博客 2075

STM32F103C8T6+HX711实战:从零打造智能体重秤(附OLED显示与语音播报)

本文详细介绍了基于STM32F103C8T6微控制器和HX711称重模块,从零构建智能体重秤的完整实战教程。内容涵盖硬件选型、系统架构、驱动编写、数据滤波校准算法,并实现了OLED显示与语音播报功能。该项目是嵌入式学习的综合性实践,尤其适合作为毕业设计课题,帮助开发者掌握传感器应用、数据处理及人机交互等核心技能。

weixin_28285943的博客 518

BS版图形系统 - 画线

BS版图形系统 - 画线 一晃两个月过去了,儿子也考了个喜欢的大学,重新,又稳定了下来。 我也重操旧业,编点小程序。时不时发个小博客,自娱自乐一下。 今天处理图元 - 线。 话不多说,直接上代码。 export class TLine extends TTwoPointMeta { beginArrow: TArrow = new TArrow; endArrow: TArrow = new TArrow; Initial() { this.setClassType(

drgraph的博客 774

HFSS学习笔记——Vivaldi天线仿真(一)

Vivaldi 天线HFSS仿真,HFSS中指数曲线绘制及曲面绘制。

and_future的博客 1万+

Java Swing Ribbon(Flamingo)的使用07:长廊Gallery的使用

之前的文章主要介绍了如何在Flamingo-Ribbon菜单中添加Flamingo的功能组件。其实在Flamingo中还可以添加Swing组件比如复选框、下拉选框、颜色按钮等。这边文章主要介绍的就是如何在Flamingo的Ribbon菜单中添加JComponent组件。 在看这篇文章之前建议先看如下的一些文章。当然如果对Flamino-Ribbon已经有一些基本的了解的则不用看了。

大饼辉的专栏 3639

Ubuntu22.04安装ROS1

代表使用 2 线程进行编译,可以根据 CPU 适当调整。如果出现小乌龟窗口,说明安装成功 🎉!启动成功,则打开另一个终端,测试。需要解决一些兼容性问题,因为。由于 Ubuntu 22.04。过程,确保成功安装。

asafriend的博客 4647

数据分析实战:如何用皮尔逊相关系数避免伪相关陷阱(附Python代码)

本文通过实战案例与Python代码,深入解析了皮尔逊相关系数在数据分析中的应用与常见陷阱。文章重点揭示了如何识别与避免由混杂变量导致的伪相关,并介绍了通过可视化、敏感性分析、分层分析与偏相关分析等方法来检验相关性的可靠性,帮助分析师建立严谨的相关性思维。

weixin_29051245的博客 411

修改 CMFCRibbonGallery 的默认按钮数

CMFCRibbonGallery 中的默认按钮数是6,SetIconsInRow 方法可以设置下拉框中的按钮列数,正常显示框中的按钮数确是固定为6,不能改变,google以后建立一个新类继承于这个类,把默认列数设为100,而 CMFCRibbonGallery 会根据窗口宽度自动调整实际列数,效果极好。原代码如下。 #pragma once // TTMv8RibbonGallery

hhhh63的专栏 2605

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7051

什么是事件行为?

什么是事件行为? 事件行为分为两部分:事件行为+事件绑定 事件行为:是一个元素天生自带的属性,是浏览器赋予其天生的行为 事件绑定:就是给当前事件行为赋一个函数值.这样一来.触发事件行为的时候就会执行绑定的函数 如果一个元素没有给他的onclick赋值函数,此时我们点击这个元素,此时我们点击这个元素的时候也会触发它的onclick的事件行为,只不过是null什么都没干 复制代码...

weixin_34107955的博客 917

《低功耗方法学》翻译——前言

前言

记录所学,分享知识,结识挚友 1208

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BS版图形系统 - Ribbon工具栏初步

BS版图形系统 - Ribbon工具栏初步组件实现RibbonRibbonTabToolBarButton调用对应的xml运行效果下一步工作 QQ: 282397369 开始攻Ribbon,毕竟软件有个象样的界面,还是要拿得出手一点点。 思路就借鉴DevExpress,简化实现,不整太多的不必要环节。 第二个思路就是先实现功能,以后再模块化。 组件实现 先准备初步要用到的组件。 Ribbon export class TRibbon extends TPageControl { btnApp: TB

drgraph的博客 602

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Ribbon使用笔记

1. 定义按钮组中各按钮大小 &lt;ribbon:RibbonGroup Header="大小" &gt; &lt;ribbon:RibbonGroup.GroupSizeDefinitions&gt; &lt;ribbon:RibbonGroupSizeDefinition&gt; &lt;ribbon:RibbonControlSizeDefinit...

移动开发记录 256

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

利用Ribbon工具进行自定义按钮

一.根据权限控制自定义按钮 1.在Ribbon中找到要做控制的实体所在的解决方案(最好新建solution将要做按钮控制的Entity放在里面,这样容易发布) 2.在进入solution中选到自己要做按钮控制的Entity 如图: 3.给自带按钮添加JS根据角色进行控制 a.先找到要控制的按钮 b.选中按钮后右击—>选择Customise Command 如图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201214174532934.png?x-oss

weixin_44345054的博客 1575

DevExpress WinForm 利用GalleryDropDown+RibbonControl 来实现Office 好看的按钮下拉内容

DevExpress Winform 提供了GalleryControl来实现多组图片展览和分组展示,譬如其自带的ImagePicker图片选择器,就是用到GalleryControl来实现的,如下图: 对于office当中以下的这种效果,dev提供了另外一个组件,就是GalleryDropDown,它拥有GalleryControl的特点,同时也能在RibbonControl上被利用显示,...

涛神-Dev 的博客 1万+

BS版图形系统 - 矩形

BS版图形系统 - 矩形 QQ: 282397369 Html5的Canvas,最基本的功能可以支持画矩形,其实也就那几个参数来回设置。 export class TRectangle extends TTwoPointMeta { cornerRadius: number = 0; // 圆角半径 Initial() { this.setClassType(CbwClassType.Rectangle); super.Initial(); }

drgraph的博客 389

SpringCloud(六):Ribbon示例

基于博客已有的项目所做更改。 链接:http://pan.baidu.com/s/1bpnNvRL 密码:ffnl 一、建立ribbon的项目 将microservice-consumer-movie复制粘贴一下,重新命名为:microservice-consumer-movie-ribbon 二、修改命名 1、更改pom文件 microservice-consumer-movie

我翱翔的天空 3083

DrGraph原理示教 - OpenCV 4 功能 - 阈值

参数4:阈值的方式,主要有5种,分别为cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV。有时间看下源码就可以不用猜测了。二进制阈值化:选择一个特定的阈值量,大于该阈值的像素点的灰度值设定为最大值(如8位灰度值最大为255),小于该阈值的像素点的灰度值设定为0。反阈值化为0:与阈值化为0类似,只是像素点的灰度值大于该阈值的不进行任何改变,而小于该阈值的,其灰度值全部变为0。

drgraph的博客 1447
上一篇: BS版图形系统 - OpenCV - 第5章笔记
下一篇: BS版图形系统 - OpenCV - 第6章笔记
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值