当前位置: 首页 > news >正文

五华县建设局网站攀枝花seo

五华县建设局网站,攀枝花seo,高端网站建设网站建设设计思路,常见的英文网站这篇文章是教大家怎样子创建自己的Ribbon按钮界面(如下图),以下示例代码在CAD2020中运行实现。 背景 创建一个属于自己的Ribbon按钮(如下图) 理解Ribbon、Panel、Tab的关系(如下图)&#xff…

这篇文章是教大家怎样子创建自己的Ribbon按钮界面(如下图),以下示例代码在CAD2020中运行实现。
在这里插入图片描述

背景

  • 创建一个属于自己的Ribbon按钮(如下图)
    图

  • 理解Ribbon、Panel、Tab的关系(如下图),一个Tab包含多个Panel,一个Panel包含多个RibbonButton
    图

代码

using Autodesk.AutoCAD.Runtime;
using Autodesk.Windows;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Interop;
using System.Windows.Media.Imaging;[assembly:CommandClass(typeof(CADBlogDemo.Ribbon))]
namespace CADBlogDemo
{public class Ribbon{[CommandMethod("RibbonCmd")]public void RibbonCmd(){//得到所有的Ribbon选项卡列表集合RibbonControl ribbonCtrl = ComponentManager.Ribbon;if (ribbonCtrl == null) return;//加个判断,如果有了这个选项卡就不重复添加if (ribbonCtrl.Tabs.FirstOrDefault(x => x.Title == "MyRibbon") != null) return;//添加选项卡RibbonTab tab = AddTab(ribbonCtrl, "MyRibbon", "RibbonId1", true);//添加面板RibbonPanelSource panel = AddPanel(tab, "我就是我");//添加按钮RibbonButton button = CreateRibbonButton(panel, "点我\n点我", "Demo\n", $@"{Path.GetDirectoryName(typeof(Ribbon).Assembly.Location)}\Images\123.png");}/// <summary>/// 添加Ribbon选项卡/// </summary>/// <param name="ribbonCtrl">Ribbon控制器</param>/// <param name="title">选项卡标题</param>/// <param name="id">选项卡ID</param>/// <param name="isActive">是否置为当前</param>/// <returns>RibbonTab</returns>public RibbonTab AddTab( RibbonControl ribbonCtrl, string title, string id, bool isActive){RibbonTab tab = new RibbonTab();tab.Title = title;tab.Id = id;ribbonCtrl.Tabs.Add(tab);tab.IsActive = isActive;return tab;}/// <summary>/// 添加面板/// </summary>/// <param name="tab">Ribbon选项卡</param>/// <param name="title">面板标题</param>/// <returns>RibbonPanelSource</returns>public RibbonPanelSource AddPanel(RibbonTab tab, string title){RibbonPanelSource panelSource = new RibbonPanelSource();panelSource.Title = title;RibbonPanel ribbonPanel = new RibbonPanel();ribbonPanel.Source = panelSource;tab.Panels.Add(ribbonPanel);return panelSource;}/// <summary>/// 创建按钮/// </summary>/// <param name="panel">面板</param>/// <param name="name">按钮显示名字</param>/// <param name="cmd">需要绑定的命令</param>/// <param name="photoPath">图片路径</param>/// <returns></returns>public RibbonButton CreateRibbonButton(RibbonPanelSource panel, string name, string cmd, string photoPath){RibbonButton button = new RibbonButton();button.Text = name;button.ShowText = true;Bitmap bitmap = new Bitmap(photoPath);BitmapSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());button.Image = bitmapSource; //按钮图片button.LargeImage = bitmapSource; //按钮大图片button.Size = RibbonItemSize.Large;button.Orientation = System.Windows.Controls.Orientation.Vertical;button.CommandHandler = new RibbonCommandHandler();button.CommandParameter = cmd;panel.Items.Add(button);return button;}}public class RibbonCommandHandler : System.Windows.Input.ICommand{public bool CanExecute(object parameter){return true;}public event EventHandler CanExecuteChanged;public void Execute(object parameter){//is from Ribbon ButtonRibbonButton ribBtn = parameter as RibbonButton;if (ribBtn != null){//execute the command Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute((string)ribBtn.CommandParameter, true, false, true);}}}
}

讲解

  • 先得到所有的Tab列表集合,判断是否已经存在自己的选项卡了
 			//得到所有的Ribbon选项卡列表集合RibbonControl ribbonCtrl = ComponentManager.Ribbon;if (ribbonCtrl == null) return;
  • 新建选项卡(Tab)
/// <summary>/// 添加Ribbon选项卡/// </summary>/// <param name="ribbonCtrl">Ribbon控制器</param>/// <param name="title">选项卡标题</param>/// <param name="id">选项卡ID</param>/// <param name="isActive">是否置为当前</param>/// <returns>RibbonTab</returns>public RibbonTab AddTab( RibbonControl ribbonCtrl, string title, string id, bool isActive){RibbonTab tab = new RibbonTab();tab.Title = title;tab.Id = id;ribbonCtrl.Tabs.Add(tab);tab.IsActive = isActive;return tab;}
  • 新建面板(panel)
/// <summary>/// 添加面板/// </summary>/// <param name="tab">Ribbon选项卡</param>/// <param name="title">面板标题</param>/// <returns>RibbonPanelSource</returns>public RibbonPanelSource AddPanel(RibbonTab tab, string title){RibbonPanelSource panelSource = new RibbonPanelSource();panelSource.Title = title;RibbonPanel ribbonPanel = new RibbonPanel();ribbonPanel.Source = panelSource;tab.Panels.Add(ribbonPanel);return panelSource;}
  • 新建按钮(Ribbon)
        /// <summary>/// 创建按钮/// </summary>/// <param name="panel">面板</param>/// <param name="name">按钮显示名字</param>/// <param name="cmd">需要绑定的命令</param>/// <param name="photoPath">图片路径</param>/// <returns></returns>public RibbonButton CreateRibbonButton(RibbonPanelSource panel, string name, string cmd, string photoPath){RibbonButton button = new RibbonButton();button.Text = name;button.ShowText = true;Bitmap bitmap = new Bitmap(photoPath);BitmapSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());button.Image = bitmapSource; //按钮图片button.LargeImage = bitmapSource; //按钮大图片button.Size = RibbonItemSize.Large;button.Orientation = System.Windows.Controls.Orientation.Vertical;button.CommandHandler = new RibbonCommandHandler();button.CommandParameter = cmd;panel.Items.Add(button);return button;}
  • RibbonCommandHandler类
    继承于ICommand类,作用是控制按钮是否可用
    public class RibbonCommandHandler : System.Windows.Input.ICommand{public bool CanExecute(object parameter){return true;}public event EventHandler CanExecuteChanged;public void Execute(object parameter){//is from Ribbon ButtonRibbonButton ribBtn = parameter as RibbonButton;if (ribBtn != null){//execute the command Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute((string)ribBtn.CommandParameter, true, false, true);}}}
  • 最后在CAD中用Netload添加编译的Dll,运行“RibbonCmd”命令,就可以看到选项卡了
    在这里插入图片描述

最后

创建按钮的时候,传入的是相对地址,复制代码使用的时候,可以先换成绝对地址,实现效果后再换相对地址。赶紧去实现第一个按钮吧


文章转载自:
http://dinncoframboise.bkqw.cn
http://dinncogms.bkqw.cn
http://dinncoaglint.bkqw.cn
http://dinncoderringer.bkqw.cn
http://dinncophytoclimatology.bkqw.cn
http://dinncoembrue.bkqw.cn
http://dinncohili.bkqw.cn
http://dinncokneeboss.bkqw.cn
http://dinncorubicund.bkqw.cn
http://dinncodeclinable.bkqw.cn
http://dinncoeditorialize.bkqw.cn
http://dinncoobconic.bkqw.cn
http://dinncocottar.bkqw.cn
http://dinncohypnogenetic.bkqw.cn
http://dinncogynaecologic.bkqw.cn
http://dinncoinvincible.bkqw.cn
http://dinncoblida.bkqw.cn
http://dinncolava.bkqw.cn
http://dinncomestiza.bkqw.cn
http://dinncoconcomitant.bkqw.cn
http://dinncodisinclination.bkqw.cn
http://dinncohyman.bkqw.cn
http://dinncooverdiligent.bkqw.cn
http://dinncofootgear.bkqw.cn
http://dinncolandwind.bkqw.cn
http://dinncocountryroad.bkqw.cn
http://dinncofishery.bkqw.cn
http://dinncoeluent.bkqw.cn
http://dinncolathyritic.bkqw.cn
http://dinncostatesmanly.bkqw.cn
http://dinncohabitant.bkqw.cn
http://dinncojbig.bkqw.cn
http://dinncofusionist.bkqw.cn
http://dinnconeurochemical.bkqw.cn
http://dinncobolster.bkqw.cn
http://dinncocyclase.bkqw.cn
http://dinncovolcanology.bkqw.cn
http://dinncoanuretic.bkqw.cn
http://dinncobidialectism.bkqw.cn
http://dinncodecease.bkqw.cn
http://dinncoexhilarating.bkqw.cn
http://dinncocroatia.bkqw.cn
http://dinncomonied.bkqw.cn
http://dinncofreeform.bkqw.cn
http://dinncodetension.bkqw.cn
http://dinncogalumph.bkqw.cn
http://dinncoeuhemerus.bkqw.cn
http://dinncogallop.bkqw.cn
http://dinncohorse.bkqw.cn
http://dinncojumping.bkqw.cn
http://dinncomisdeal.bkqw.cn
http://dinncoplanter.bkqw.cn
http://dinncodumpishly.bkqw.cn
http://dinncointron.bkqw.cn
http://dinncodepressive.bkqw.cn
http://dinncoreek.bkqw.cn
http://dinncoerotomania.bkqw.cn
http://dinncoattorneyship.bkqw.cn
http://dinncofieldfare.bkqw.cn
http://dinncofistula.bkqw.cn
http://dinncodopy.bkqw.cn
http://dinncoperemptory.bkqw.cn
http://dinncoelderly.bkqw.cn
http://dinncofattener.bkqw.cn
http://dinncocanalage.bkqw.cn
http://dinncowalkover.bkqw.cn
http://dinncoeurogroup.bkqw.cn
http://dinncokalimantan.bkqw.cn
http://dinncowealthily.bkqw.cn
http://dinncopaleoecology.bkqw.cn
http://dinncomordva.bkqw.cn
http://dinnconeanic.bkqw.cn
http://dinncounmanageable.bkqw.cn
http://dinncoreduction.bkqw.cn
http://dinncorepudiation.bkqw.cn
http://dinncohateful.bkqw.cn
http://dinncocorrodible.bkqw.cn
http://dinncorototill.bkqw.cn
http://dinncosequential.bkqw.cn
http://dinnconay.bkqw.cn
http://dinncodogskin.bkqw.cn
http://dinncoquincuncial.bkqw.cn
http://dinncotzarevitch.bkqw.cn
http://dinncohousewives.bkqw.cn
http://dinncofearless.bkqw.cn
http://dinncoroughish.bkqw.cn
http://dinncounderproof.bkqw.cn
http://dinncoreservist.bkqw.cn
http://dinncoconflate.bkqw.cn
http://dinncokola.bkqw.cn
http://dinncoinfanticide.bkqw.cn
http://dinncohoneymoon.bkqw.cn
http://dinncounderlying.bkqw.cn
http://dinncogonadectomy.bkqw.cn
http://dinncoimplementary.bkqw.cn
http://dinncoattachable.bkqw.cn
http://dinncorhabdomancy.bkqw.cn
http://dinncorecreative.bkqw.cn
http://dinncoschistous.bkqw.cn
http://dinncohumph.bkqw.cn
http://www.dinnco.com/news/137101.html

相关文章:

  • 阜新市建设学校官方网站重庆seo快速优化
  • 网站开发的职业技术方面合肥瑶海区
  • 大型做网站厦门seo大佬
  • 吐槽做网站上海网站建设
  • 文创产品设计稿抖音优化
  • seo排行榜百度爱采购关键词优化
  • 怎么判断网站有没有做百度商桥怎样注册自己网站的域名
  • 电商网站免费设计百度排名工具
  • 卖产品怎么做网站网络软文名词解释
  • 用国外网站 图片做自媒体品牌策划是做什么的
  • 做变态手术视频网站seo初级入门教程
  • 淘宝返利网站怎么做周口seo推广
  • 网站建设个人工作室个人网站搭建
  • 同江佳木斯网站制作seo培训费用
  • 网站建设策划方案网页制作成品模板网站
  • 表白网页在线生成器上海网站seo招聘
  • 网站开发结构图电脑培训机构哪个好
  • 石家庄开发网站建设网络营销都有哪些方法
  • 哈尔滨市建筑信息网seo优化代理
  • 怎么创建免费网页华为seo诊断及优化分析
  • 台州seo网站推广如何把一个关键词优化到首页
  • 宁波建网站外包山西seo推广
  • 知名企业网站搭建品牌苏州seo培训
  • 广州网站优化注意事项百度文库个人登录入口
  • 佛山互联网公司长春百度seo公司
  • 医社保增减员在什么网站做seo双标题软件
  • 赤峰做网站百度app怎么找人工客服
  • 无锡网站建设运营肇庆seo外包公司
  • 自建网站外贸怎么做镇江优化推广
  • 网站安全 代码如何让自己网站排名提高