Flutter 初识:Chip控件

2024-09-01 16:04
文章标签 初识 控件 flutter chip

本文主要是介绍Flutter 初识:Chip控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Flutter Chip控件小结

    • Chip
      • 属性解析
      • 示例
    • InputChip
      • 属性解析
      • 示例
    • ChoiceChip
      • 属性解析
      • 示例
    • FilterChip
      • 属性解析
      • 示例
    • ActionChip
      • 属性解析
      • 示例

在 Flutter 中,Chip 是一种用于显示简洁信息的组件。它通常用来展示标签、属性、短的文本片段等,并可以包含可选的删除按钮或其他图标。本文将详细介绍 Chip 控件及其各种类型和使用场景。

Chip

Chip 是 Flutter 中用于显示紧凑信息的小部件,通常包含一个标签和可选的图标或删除按钮,并且可以用作交互式元素。

Chip 控件的主要特点
紧凑:Chip 控件设计紧凑,适合展示短的、简洁的信息。
可交互:Chip 控件可以包含删除按钮或其他图标,支持交互操作。
可定制:Chip 控件可以自定义颜色、形状、图标等。

属性解析

const Chip({super.key,this.avatar,required this.label,this.labelStyle,this.labelPadding,this.deleteIcon,this.onDeleted,this.deleteIconColor,this.deleteButtonTooltipMessage,this.side,this.shape,this.clipBehavior = Clip.none,this.focusNode,this.autofocus = false,this.color,this.backgroundColor,this.padding,this.visualDensity,this.materialTapTargetSize,this.elevation,this.shadowColor,this.surfaceTintColor,this.iconTheme,})
  • avatar (Widget?): 要显示在标签前的小部件,通常是一个圆形头像。
  • label (Widget): 必需参数,表示 Chip 的主要内容,通常是文本。
  • labelStyle (TextStyle?): 标签的文本样式。
  • labelPadding (EdgeInsetsGeometry?): 标签的内边距。
  • deleteIcon (Widget?): 删除图标的小部件。
  • onDeleted (VoidCallback?): 当删除图标被点击时调用的回调函数。
  • deleteIconColor (Color?): 删除图标的颜色。
  • deleteButtonTooltipMessage (String?): 删除按钮的工具提示信息。
  • side (BorderSide?): 边框的样式。
  • shape (OutlinedBorder?): Chip 的形状。
  • clipBehavior (Clip): 定义 Chip 的剪裁行为,默认为 Clip.none。
  • focusNode (FocusNode?): 处理键盘焦点的节点。
  • autofocus (bool): 是否自动获得焦点。
  • color (Color?): Chip 的颜色。这已弃用,请使用 backgroundColor。
  • backgroundColor (Color?): Chip 的背景颜色。
  • padding (EdgeInsetsGeometry?): Chip 的内边距。
  • visualDensity (VisualDensity?): 定义 Chip 的视觉密度。
  • materialTapTargetSize (MaterialTapTargetSize?): 控制触摸目标的大小。
  • elevation (double?): Chip 的阴影高度。
  • shadowColor (Color?): 阴影的颜色。
  • surfaceTintColor (Color?): 表面颜色的色调。
  • iconTheme (IconThemeData?): 图标主题,用于控制图标的外观。

示例

class WidgetPage extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('Chip 示例')),body: Center(child: Wrap(spacing: 8.0,children: [Chip(avatar: CircleAvatar(backgroundColor: Colors.blue.shade900,child: Text('A'),),label: Text('Avatar Chip'),onDeleted: () {print('Avatar Chip deleted');},deleteIcon: Icon(Icons.cancel),deleteIconColor: Colors.red,deleteButtonTooltipMessage: 'Remove',backgroundColor: Colors.blue.shade100,labelStyle: TextStyle(fontWeight: FontWeight.bold,color: Colors.blue.shade900,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0),side: BorderSide(color: Colors.blue.shade900),),elevation: 4.0,shadowColor: Colors.blueAccent,padding: EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,),Chip(label: Text('Simple Chip'),),Chip(label: Text('Disabled Chip'),onDeleted: null, // 禁用删除功能),],),),),);}
}

在这里插入图片描述

 
 

InputChip

InputChip 是 Flutter 中的一个小部件,用于显示可交互的紧凑信息。与普通的 Chip 不同,InputChip 具有更多的交互行为,例如选择和删除操作

属性解析

const InputChip({super.key,this.avatar,required this.label,this.labelStyle,this.labelPadding,this.selected = false,this.isEnabled = true,this.onSelected,this.deleteIcon,this.onDeleted,this.deleteIconColor,this.deleteButtonTooltipMessage,this.onPressed,this.pressElevation,this.disabledColor,this.selectedColor,this.tooltip,this.side,this.shape,this.clipBehavior = Clip.none,this.focusNode,this.autofocus = false,this.color,this.backgroundColor,this.padding,this.visualDensity,this.materialTapTargetSize,this.elevation,this.shadowColor,this.surfaceTintColor,this.iconTheme,this.selectedShadowColor,this.showCheckmark,this.checkmarkColor,this.avatarBorder = const CircleBorder(),})
  • avatar (Widget?): 要显示在标签前的小部件,通常是一个圆形头像。
  • label (Widget): 必需参数,表示 Chip 的主要内容,通常是文本。
  • labelStyle (TextStyle?): 标签的文本样式。
  • labelPadding (EdgeInsetsGeometry?): 标签的内边距。
  • selected (bool): 是否选中此 Chip,默认值为 false。
  • isEnabled (bool): 是否启用此 Chip,默认值为 true。
  • onSelected (ValueChanged?):当 Chip 被选中或取消选中时调用的回调函数。
  • deleteIcon (Widget?): 删除图标的小部件。
  • onDeleted (VoidCallback?): 当删除图标被点击时调用的回调函数。
  • deleteIconColor (Color?): 删除图标的颜色。
  • deleteButtonTooltipMessage (String?): 删除按钮的工具提示信息。
  • onPressed (VoidCallback?): 当 Chip 被按下时调用的回调函数。
  • pressElevation (double?): 按下时的阴影高度。
  • disabledColor (Color?): Chip 禁用时的背景颜色。
  • selectedColor (Color?): Chip 选中时的背景颜色。
  • tooltip (String?): 此 Chip 的工具提示信息。
  • side (BorderSide?): 边框的样式。
  • shape (OutlinedBorder?): InputChip 的形状。
  • clipBehavior (Clip): 定义 InputChip 的剪裁行为,默认为 Clip.none。
  • focusNode (FocusNode?): 处理键盘焦点的节点。
  • autofocus (bool): 是否自动获得焦点。
  • color (Color?): InputChip 的颜色。这已弃用,请使用 backgroundColor。
  • backgroundColor (Color?): InputChip 的背景颜色。
  • padding (EdgeInsetsGeometry?): InputChip 的内边距。
  • visualDensity (VisualDensity?): 定义 InputChip 的视觉密度。
  • materialTapTargetSize (MaterialTapTargetSize?): 控制触摸目标的大小。
  • elevation (double?): InputChip 的阴影高度。
  • shadowColor (Color?): 阴影的颜色。
  • surfaceTintColor (Color?): 表面颜色的色调。
  • iconTheme (IconThemeData?): 图标主题,用于控制图标的外观。
  • selectedShadowColor (Color?): Chip 选中时的阴影颜色。
  • showCheckmark (bool?): 是否显示复选标记。
  • checkmarkColor (Color?): 复选标记的颜色。
  • avatarBorder (ShapeBorder): 头像的边框,默认为 CircleBorder()。

示例

class WidgetPage extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('InputChip 示例')),body: Center(child: Wrap(spacing: 8.0,children: [InputChip(avatar: CircleAvatar(backgroundColor: Colors.blue.shade900,child: Text('A'),),label: Text('Selectable Chip'),selected: true,onSelected: (bool selected) {print('Selectable Chip ${selected ? "selected" : "deselected"}');},onDeleted: () {print('Selectable Chip deleted');},deleteIcon: Icon(Icons.cancel),deleteIconColor: Colors.red,deleteButtonTooltipMessage: 'Remove',selectedColor: Colors.blue.shade100,labelStyle: TextStyle(fontWeight: FontWeight.bold,color: Colors.blue.shade900,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0),side: BorderSide(color: Colors.blue.shade900),),pressElevation: 4.0,shadowColor: Colors.blueAccent,padding: EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,),InputChip(label: Text('Simple Chip'),onPressed: () {print('Simple Chip pressed');},),InputChip(label: Text('Disabled Chip'),isEnabled: false,),],),),),);}
}

在这里插入图片描述

 
 

ChoiceChip

ChoiceChip 是 Flutter 中的一种 Chip,用于从一组选项中进行单选。ChoiceChip 支持各种自定义外观和交互行为

属性解析

const ChoiceChip({super.key,this.avatar,required this.label,this.labelStyle,this.labelPadding,this.onSelected,this.pressElevation,required this.selected,this.selectedColor,this.disabledColor,this.tooltip,this.side,this.shape,this.clipBehavior = Clip.none,this.focusNode,this.autofocus = false,this.color,this.backgroundColor,this.padding,this.visualDensity,this.materialTapTargetSize,this.elevation,this.shadowColor,this.surfaceTintColor,this.iconTheme,this.selectedShadowColor,this.showCheckmark,this.checkmarkColor,this.avatarBorder = const CircleBorder(),})
  • avatar (Widget?): 要显示在标签前的小部件,通常是一个圆形头像。
  • label (Widget): 必需参数,表示 Chip 的主要内容,通常是文本。
  • labelStyle (TextStyle?): 标签的文本样式。
  • labelPadding (EdgeInsetsGeometry?): 标签的内边距。
  • onSelected (ValueChanged?): 当 Chip 被选中或取消选中时调用的回调函数。
  • pressElevation (double?): 按下时的阴影高度。
  • selected (bool): 必需参数,当前是否选中了这个 Chip。
  • selectedColor (Color?): 选中时的背景颜色。
  • disabledColor (Color?): 禁用状态下的背景颜色。
  • tooltip (String?): 此 Chip 的工具提示信息。
  • side (BorderSide?): 边框的样式。
  • shape (OutlinedBorder?): ChoiceChip 的形状。
  • clipBehavior (Clip): 定义 ChoiceChip 的剪裁行为,默认为 Clip.none。
  • focusNode (FocusNode?): 处理键盘焦点的节点。
  • autofocus (bool): 是否自动获得焦点。
  • color (Color?): ChoiceChip 的颜色。这已弃用,请使用 backgroundColor。
  • backgroundColor (Color?): ChoiceChip 的背景颜色。
  • padding (EdgeInsetsGeometry?): ChoiceChip 的内边距。
  • visualDensity (VisualDensity?): 定义 ChoiceChip 的视觉密度。
  • materialTapTargetSize (MaterialTapTargetSize?): 控制触摸目标的大小。
  • elevation (double?): ChoiceChip 的阴影高度。
  • shadowColor (Color?): 阴影的颜色。
  • surfaceTintColor (Color?): 表面颜色的色调。
  • iconTheme (IconThemeData?): 图标主题,用于控制图标的外观。
  • selectedShadowColor (Color?): 选中时的阴影颜色。
  • showCheckmark (bool?): 是否显示复选标记。
  • checkmarkColor (Color?): 复选标记的颜色。
  • avatarBorder (ShapeBorder): 头像的边框,默认为 CircleBorder()。

示例

class WidgetPage extends StatefulWidget {@override_WidgetPageState createState() => _WidgetPageState();
}class _WidgetPageState extends State<WidgetPage> {int selectedIndex = 0;@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('ChoiceChip 示例')),body: Center(child: Wrap(spacing: 8.0,children: List<Widget>.generate(3, (int index) {return ChoiceChip(avatar: CircleAvatar(backgroundColor: Colors.blue.shade900,child: Text('C$index'),),label: Text('Choice $index'),selected: selectedIndex == index,onSelected: (bool selected) {setState(() {selectedIndex = selected ? index : selectedIndex;});},selectedColor: Colors.blue.shade100,labelStyle: TextStyle(fontWeight: FontWeight.bold,color: selectedIndex == index? Colors.blue.shade900: Colors.grey,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0),side: BorderSide(color: selectedIndex == index? Colors.blue.shade900: Colors.grey,),),pressElevation: 4.0,shadowColor: Colors.blueAccent,padding: EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,showCheckmark: false,);}),),),),);}
}

在这里插入图片描述

 
 

FilterChip

FilterChip 是 Flutter 中的一种 Chip,用于表示一个可以选择或取消选择的选项,通常用于筛选内容。

属性解析

const FilterChip({super.key,this.avatar,required this.label,this.labelStyle,this.labelPadding,this.selected = false,required this.onSelected,this.deleteIcon,this.onDeleted,this.deleteIconColor,this.deleteButtonTooltipMessage,this.pressElevation,this.disabledColor,this.selectedColor,this.tooltip,this.side,this.shape,this.clipBehavior = Clip.none,this.focusNode,this.autofocus = false,this.color,this.backgroundColor,this.padding,this.visualDensity,this.materialTapTargetSize,this.elevation,this.shadowColor,this.surfaceTintColor,this.iconTheme,this.selectedShadowColor,this.showCheckmark,this.checkmarkColor,this.avatarBorder = const CircleBorder(),})
  • avatar (Widget?): 要显示在标签前的小部件,通常是一个圆形头像。
  • label (Widget): 必需参数,表示 Chip 的主要内容,通常是文本。
  • labelStyle (TextStyle?): 标签的文本样式。
  • labelPadding (EdgeInsetsGeometry?): 标签的内边距。
  • selected (bool): 是否选中此 Chip,默认值为 false。
  • onSelected (ValueChanged): 当 Chip 被选中或取消选中时调用的回调函数。
  • deleteIcon (Widget?): 删除图标的小部件。
  • onDeleted (VoidCallback?): 当删除图标被点击时调用的回调函数。
  • deleteIconColor (Color?): 删除图标的颜色。
  • deleteButtonTooltipMessage (String?): 删除按钮的工具提示信息。
  • pressElevation (double?): 按下时的阴影高度。
  • disabledColor (Color?): Chip 禁用时的背景颜色。
  • selectedColor (Color?): Chip 选中时的背景颜色。
  • tooltip (String?): 此 Chip 的工具提示信息。
  • side (BorderSide?): 边框的样式。
  • shape (OutlinedBorder?): FilterChip 的形状。
  • clipBehavior (Clip): 定义 FilterChip 的剪裁行为,默认为 Clip.none。
  • focusNode (FocusNode?): 处理键盘焦点的节点。
  • autofocus (bool): 是否自动获得焦点。
  • color (Color?): FilterChip 的颜色。这已弃用,请使用 backgroundColor。
  • backgroundColor (Color?): FilterChip 的背景颜色。
  • padding (EdgeInsetsGeometry?): FilterChip 的内边距。
  • visualDensity (VisualDensity?): 定义 FilterChip 的视觉密度。
  • materialTapTargetSize (MaterialTapTargetSize?): 控制触摸目标的大小。
  • elevation (double?): FilterChip 的阴影高度。
  • shadowColor (Color?): 阴影的颜色。
  • surfaceTintColor (Color?): 表面颜色的色调。
  • iconTheme (IconThemeData?): 图标主题,用于控制图标的外观。
  • selectedShadowColor (Color?): Chip 选中时的阴影颜色。
  • showCheckmark (bool?): 是否显示复选标记。
  • checkmarkColor (Color?): 复选标记的颜色。
  • avatarBorder (ShapeBorder): 头像的边框,默认为 CircleBorder()。

示例

class WidgetPage extends StatefulWidget {@override_WidgetPageState createState() => _WidgetPageState();
}class _WidgetPageState extends State<WidgetPage> {List<String> _filters = [];@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('FilterChip 示例')),body: Center(child: Wrap(spacing: 8.0,children: [FilterChip(avatar: CircleAvatar(backgroundColor: Colors.blue.shade900,child: Text('F1'),),label: Text('Filter 1'),selected: _filters.contains('Filter 1'),onSelected: (bool selected) {setState(() {if (selected) {_filters.add('Filter 1');} else {_filters.remove('Filter 1');}});},selectedColor: Colors.blue.shade100,labelStyle: TextStyle(fontWeight: FontWeight.bold,color: _filters.contains('Filter 1')? Colors.blue.shade900: Colors.grey,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0),side: BorderSide(color: _filters.contains('Filter 1')? Colors.blue.shade900: Colors.grey,),),pressElevation: 4.0,shadowColor: Colors.blueAccent,padding: EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,showCheckmark: false,),FilterChip(avatar: CircleAvatar(backgroundColor: Colors.green.shade900,child: Text('F2'),),label: Text('Filter 2'),selected: _filters.contains('Filter 2'),onSelected: (bool selected) {setState(() {if (selected) {_filters.add('Filter 2');} else {_filters.remove('Filter 2');}});},selectedColor: Colors.green.shade100,labelStyle: TextStyle(fontWeight: FontWeight.bold,color: _filters.contains('Filter 2')? Colors.green.shade900: Colors.grey,),shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0),side: BorderSide(color: _filters.contains('Filter 2')? Colors.green.shade900: Colors.grey,),),pressElevation: 4.0,shadowColor: Colors.greenAccent,padding: EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,showCheckmark: false,),],),),),);}
}

在这里插入图片描述

 
 

ActionChip

ActionChip 是 Flutter 中的一种 Chip,用于表示一个可以触发操作的选项。ActionChip 支持各种自定义外观和交互行为

属性解析

const ActionChip({super.key,this.avatar,required this.label,this.labelStyle,this.labelPadding,this.onPressed,this.pressElevation,this.tooltip,this.side,this.shape,this.clipBehavior = Clip.none,this.focusNode,this.autofocus = false,this.color,this.backgroundColor,this.disabledColor,this.padding,this.visualDensity,this.materialTapTargetSize,this.elevation,this.shadowColor,this.surfaceTintColor,this.iconTheme,})
  • avatar (Widget?): 要显示在标签前的小部件,通常是一个圆形头像。
  • label (Widget): 必需参数,表示 Chip 的主要内容,通常是文本。
  • labelStyle (TextStyle?): 标签的文本样式。
  • labelPadding (EdgeInsetsGeometry?): 标签的内边距。
  • onPressed (VoidCallback?): 当 Chip 被按下时调用的回调函数。
  • pressElevation (double?): 按下时的阴影高度。
  • tooltip (String?): 此 Chip 的工具提示信息。
  • side (BorderSide?): 边框的样式。
  • shape (OutlinedBorder?): ActionChip 的形状。
  • clipBehavior (Clip): 定义 ActionChip 的剪裁行为,默认为 Clip.none。
  • focusNode (FocusNode?): 处理键盘焦点的节点。
  • autofocus (bool): 是否自动获得焦点。
  • color (Color?): ActionChip 的颜色。这已弃用,请使用 backgroundColor。
  • backgroundColor (Color?): ActionChip 的背景颜色。
  • disabledColor (Color?): Chip 禁用时的背景颜色。
  • padding (EdgeInsetsGeometry?): ActionChip 的内边距。
  • visualDensity (VisualDensity?): 定义 ActionChip 的视觉密度。
  • materialTapTargetSize (MaterialTapTargetSize?): 控制触摸目标的大小。
  • elevation (double?): ActionChip 的阴影高度。
  • shadowColor (Color?): 阴影的颜色。
  • surfaceTintColor (Color?): 表面颜色的色调。
  • iconTheme (IconThemeData?): 图标主题,用于控制图标的外观。

示例

class WidgetPage extends StatelessWidget {void _handleChipPress() {print('ActionChip 被按下');}@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('ActionChip 示例')),body: Center(child: ActionChip(avatar: CircleAvatar(backgroundColor: Colors.red.shade900,child: Text('A'),),label: Text('Action Chip'),onPressed: _handleChipPress,padding: EdgeInsets.all(8.0),labelStyle: TextStyle(fontWeight: FontWeight.bold,color: Colors.white,),backgroundColor: Colors.redAccent,shape: StadiumBorder(side: BorderSide(color: Colors.red.shade900),),pressElevation: 4.0,shadowColor: Colors.redAccent,materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,),),),);}
}

在这里插入图片描述

 
 

这篇关于Flutter 初识:Chip控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127398

相关文章

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。         基本的按钮特点:         1.按下时都会有“水波文动画”。         2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁用状态,禁用状态不响应用户点击。

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

docker学习系列(一)初识docker

在第一版本上线之后公司,我们决定将之前使用的开源api文档项目转移到本公司的服务器之上,之前用的是showdoc,showdoc利用的是php技术,作为java程序员表示需要快速部署php环境以及apach容器都需要时间,所以采用第二种方法,即利用docker进行快速部署(虽然学习成本也不比php少)。 一、docker简介 docker的官网是https://www.docker.com,

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

框架template初识

框架初识 框架就是一个别人帮我们搭好的舞台,造好了很多现成的工具供我们使用,让开发过程更快速、简洁。 Gin框架介绍 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 Gin是一个用Go语言编写的web框架。它是一个类似于martini 但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。 第一个Gin示例 package mai

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的