Flutter绘制系列03---绘制图片文字

python123题目——个税计算器 类型:简单分支。 阅读详情

在这里插入图片描述

1、绘制图片系列

因为读取图片是一个异步的操作,在读取完毕之后,需要重新渲染界面,也就是可变状态。现在要有一个概念:画布只承担绘制工作,一切数据的来源由使用者来提供。也就是将ui.Image对象作为参数传递給PaperPainter,画板质询要关注于操作。

class Paper extends StatefulWidget {
  @override
  _PaperState createState() => _PaperState();
}

class _PaperState extends State<Paper> {
  ui.Image? _image;

  @override
  void initState() {
    super.initState();
    _loadImage();
  }

  void _loadImage() async {
    _image =
        await loadImageFromAssets('assets/images/wy_300x200.jpg');
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Container(
        color: Colors.white, 
        child: CustomPaint(painter: PaperPainter(_image)));
  }

  // 方法在上面已给出,不再重复书写...
  //读取 assets 中的图片
  Future<ui.Image>? loadImageFromAssets(String path) async {
    ByteData data = await rootBundle.load(path);
    return decodeImageFromList(data.buffer.asUint8List());
  }
}

好,这样我们就将一个画板创造出来了。并且上面会有一张我们drawImage出来的图片。
在这里插入图片描述
好的,这样的话我们的图片就成功的在画布上渲染出来了。然后我们再来思考一个问题,我们有没有可能将这个图片给他按照矩形裁剪出来呢?

void _drawImageRect(Canvas canvas) {
    if (image != null) {
      canvas.drawImageRect(
          image!,
          Rect.fromCenter(
              center: Offset(image!.width/2, image!.height/2), width: 60, height: 60),
          Rect.fromLTRB(0, 0, 100, 100).translate(200, 0),
          _paint);

      canvas.drawImageRect(
          image!,
          Rect.fromCenter(
              center: Offset(image!.width/2, image!.height/2-60), width: 60, height: 60),
          Rect.fromLTRB(0, 0, 100, 100).translate(-280, -100),
          _paint);

      canvas.drawImageRect(
          image!,
          Rect.fromCenter(
              center: Offset(image!.width/2+60, image!.height/2), width: 60, height: 60),
          Rect.fromLTRB(0, 0, 100, 100).translate(-280, 50),
          _paint);
    }
  }

这样,我们就可以将我们的图片做各种不同的裁剪绘制了。
在这里插入图片描述

4、图片域绘制

drawImageNine中主要是两个矩形区域,center和dst。center表示从资源图片image上一块可缩放的矩形域,所以原点是图片的左上角。dst表示将扣出的图片填充到画布的哪个矩形域当中去。所以圆点是画布原点。这样很容易画出气泡的效果。即指定区域进行缩放,其余不动。

在这里插入图片描述

void _drawImageNine(Canvas canvas) {
    if (image != null) {
      canvas.drawImageNine(
          image!,
          Rect.fromCenter(center: Offset(image!.width/2, image!.height-6.0),
              width: image!.width-20.0, height: 2.0),
          Rect.fromCenter(center: Offset(0, 0,), width:300, height: 120),
          _paint);

      canvas.drawImageNine(
          image!,
          Rect.fromCenter(center: Offset(image!.width/2, image!.height-6.0),
              width: image!.width-20.0, height: 2.0),
          Rect.fromCenter(center: Offset(0, 0,), width:100, height: 50).translate(250, 0),
          _paint);

      canvas.drawImageNine(
          image!,
          Rect.fromCenter(center: Offset(image!.width/2, image!.height-6.0),
              width: image!.width-20.0, height: 2.0),
          Rect.fromCenter(center: Offset(0, 0,), width:80, height: 250).translate(-250, 0),
          _paint);
    }
  }

5、绘制图集drawAtlas

这个方法有7个参数,用起来比较复杂,主要作用是,在画布上绘制一张图片的很多部分,比如雪碧图(Sprite)将需要的图片放在一张图里面。另外通过drawAtlas绘制的效率更加的高

  • 定义每个Sprite类封装图片元素数据
class Sprite{
 // 矩形区域
 Rect position;
 // 距离中心点偏移
 Offset? offset;
 // 透明度
 int? alpha;
 // 旋转角度
 double rotation;
 Sprite({this.offset, this.alpha, this.rotation = 0, required this.position});
}
  • 绘制一张图片

绘制时必须要传入的参数是,图片 ui.Image、变换列表List<RSTransform>、矩形列表List<Rect>,下面通过矩形域就可以绘制这张图片:
在这里插入图片描述

void _drawSprite(Canvas canvas){
    // 添加一个 Sprite
    allSprites.add(Sprite(
        position: Rect.fromLTWH(0, 325, 257, 166),
        offset: Offset(0, 0),
        alpha: 255,
        rotation: 0));
    // 通过 allSprites 创建 RSTransform 集合
    final List<RSTransform> transforms = allSprites
        .map((sprite) => RSTransform.fromComponents(
      rotation: sprite.rotation,
      scale: 1.0,
      anchorX: 0,
      anchorY: 0,
      translateX: sprite.offset!.dx,
      translateY: sprite.offset!.dy,
    ))
        .toList();
    // 通过 allSprites 创建 Rect 集合
    final List<Rect> rects =
    allSprites.map((sprite) => sprite.position).toList();

    canvas.drawAtlas(image!, transforms, rects, null, null, null, _paint);
  }
  • 图形的变换

我们在定义Sprite时,可以将变化的属性放在其中,如平移,缩放,透明度等。一般雪碧图制作工具都会给出图片在大图中的坐标位置信息,可以添加解析到allSprites中去。
除此之外的还有颜色Color,混合模式blendMode,据此你可以对图片进行更多的操作。

5、绘制原始图集:drawAtlas

这个方法是drawAtlas的底层实现,其中变换列表,矩形域列表都转化为Float32List,颜色数组转化为Int32List,在使用方法上是一致的。

void _drawColorfulImage(Canvas canvas){
    allSprites.add(Sprite(
        position: Rect.fromLTWH(0, 325, 257, 166),
        offset: Offset(0, 0),
        alpha: 255,
        rotation: 0));

    allSprites.add(Sprite(
        position: Rect.fromLTWH(0, 325, 257, 166),
        offset: Offset(257, 130),
        alpha: 255,
        rotation: 0));

    Float32List rectList = Float32List(allSprites.length * 4);
    Float32List transformList = Float32List(allSprites.length * 4);

    for (int i = 0; i < allSprites.length; i++) {
      final Sprite sprite = allSprites[i];
      rectList[i * 4 + 0] = sprite.position.left;
      rectList[i * 4 + 1] = sprite.position.top;
      rectList[i * 4 + 2] = sprite.position.right;
      rectList[i * 4 + 3] = sprite.position.bottom;
      final RSTransform transform = RSTransform.fromComponents(
        rotation: sprite.rotation,
        scale: 1.0,
        anchorX: sprite.anchor.dx,
        anchorY: sprite.anchor.dy,
        translateX: sprite.offset!.dx,
        translateY: sprite.offset!.dy,
      );
      transformList[i * 4 + 0] = transform.scos;
      transformList[i * 4 + 1] = transform.ssin;
      transformList[i * 4 + 2] = transform.tx;
      transformList[i * 4 + 3] = transform.ty;
    }
    canvas.drawRawAtlas(image!, transformList, rectList, null, null, null, _paint);
  }

2、 文字绘制

Flutter里面的文字绘制方法明显要麻烦很多,但属性多也就意味着可定制性高
主要的绘制方法是通过drawParagraph或TextPaint.

在这里插入图片描述

1、drawParagraph绘制文字

通过ParagraphBuilder构造基本样式pushStyle和添加文字addText.builder.build()可以创建Paragraph对象,之后必须对layout限制区域,下面的蓝色区域是绘制的辅助,依次是左对齐、居中、右对齐。

void _drawTextWithParagraph(Canvas canvas,TextAlign textAlign) {
    var builder = ui.ParagraphBuilder(ui.ParagraphStyle(
      textAlign: textAlign,
      fontSize: 40,
      textDirection: TextDirection.ltr,
      maxLines: 1,
    ));
    builder.pushStyle(
      ui.TextStyle(
          color: Colors.black87, textBaseline: ui.TextBaseline.alphabetic),
    );
    builder.addText("Flutter Unit");
    ui.Paragraph paragraph = builder.build();
    paragraph.layout( ui.ParagraphConstraints(width: 300));
    canvas.drawParagraph(paragraph, Offset(0, 0));
    canvas.drawRect(Rect.fromLTRB(0, 0, 300, 40 ),
        _paint..color = Colors.blue.withAlpha(33));
  }

在这里插入图片描述

2、TextPainter绘制文字

TextPainter的绘制基本上就是对drawParagraph的封装,但是提供了很多的方法,使用起来更加简介一点,所以一般来说都会用TextPainter绘制文字。绘制先传入的TextPainter,然后进行layout布局,其中可以传入布局区域的最大和最小宽度,通过paint方法进行绘制。

void _drawTextPaint(Canvas canvas) {
    var textPainter = TextPainter(
        text: TextSpan(
            text: 'Flutter Unit',
            style: TextStyle(fontSize: 40,color: Colors.black)),
        textAlign: TextAlign.center,
        textDirection: TextDirection.ltr);
    textPainter.layout(); // 进行布局
    textPainter.paint(canvas, Offset.zero); // 进行绘制
  }

在这里插入图片描述

《物联网技术》课程笔记——第二章 物联网技术架构 文章目录第二章:物联网技术架构1 物联网技术体系(C3SD)2 系统体系结构的基本概念3 物联网体系结构——信息传递视角3.1物联网感知层3.1.1 感知层要解决的问题3.1.2 感知层的形态3.1.3 节点的感知能力与控制能力3.1.4 感知层实例3.2 物联网网络层3.2.1 网络相关概念3.2.2 IPV6与IPV4相比互联网协议的升级3.2.3 计算机网络的逻辑层次3.2.4 传输网的拓扑结构3.2.4.1 举例:智能小区的三表采集系统3.2.4.2 接入层3.2.4.2 汇聚层3.2.4.2 核心 阅读详情

相关推荐

从Delphi 7到Delphi 10.4.1的代码迁移:关键挑战与实用解决方案

本文详细探讨了从Delphi 7升级到Delphi 10.4.1进行代码迁移的关键挑战与实用解决方案。核心内容包括应对Unicode字符串处理、64位数据类型变化、VCL/FMX界面框架选择、第三方组件迁移以及数据库层现代化改造(如从BDE迁移至FireDAC)。文章为开发者提供了系统的迁移前准备、核心问题攻克策略及测试落地指南,旨在帮助团队高效、平稳地完成系统现代化升级。

weixin_29250403的博客 533

Flutter学习之TextPainter自定义绘制文本

是一个用于计算和绘制文本的工具,提供了灵活的方式来处理文本的布局和绘制。

weixin_48133091的博客 810

MTK Tunning ISP 模块面试总结

ISP面试问答

m0_72053187的博客 4540

Flutter TextPainter如何使用

是Flutter中用于高级文本布局和渲染的强大工具。它允许你更精细地控制文本的样式、布局、绘制和测量。以下是关于。

weixin_43169271的博客 1281

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 382

5种隐藏代码到图片的实用技巧:从Notepad++到Linux命令全解析

本文详细解析了5种将代码或文本隐藏到图片中的实用数据隐写技巧。从Notepad++尾部追加、Windows命令行合并,到编辑图像元数据、使用十六进制编辑器,再到Linux的cat/dd命令,全面覆盖了从图形界面到命令行的工程化实践方法,帮助开发者和安全研究人员掌握隐蔽信息传输与存储的核心技术。

hh234的博客 353

在 Flutter 中自定义画笔 Painter

在 Flutter 中自定义画笔 Painter 前言 今天我们将讨论定制 Painter,首先我们将看看什么时候使用定制 Painter,定制 Painter 是如何工作的,最后但并非最不重要的是,我们将看到一些 Flutter 定制 Painter 的项目。 原文 https://medium.com/nerd-for-tech/custom-painter-in-flutter-7d36af4dcabb 这意味着你不一定需要一个 widget 来在画布上绘制什么东西这样你就可以直接在画布上创建

会煮咖啡的猫咪 722

毫米波雷达入门知识

毫米波雷达入门知识

ssbzxcvbnm1234567的博客 5447

flutter TextPainter 的用法

本文章基于 Flutter 3.16.2 Dart SDK 3.2.2。TextPainter 是 Flutter 中用于在 Canvas 上绘制文本的类。它允许您在自定义的 CustomPainter 中使用 drawText 方法来绘制文本,并可以控制文本的位置、颜色、字体等属性。运行效果如下:就是绘制出一条普通的文本本文案例使用在线测试 https://dartpad.cn/?id现在,绘制一条文本,并在文本下绘制一条下划线(当然你可以是其他任意的图形),核心代码如下。

代码小疯子 1838

KUKA .RSI 软件包

KUKA RSI软件包通过XML文件使得机器人与外部设备(传感器通讯)通讯成为了可能,但仍存在诸多限制,该模块最多允许9台设备进行连接,有限的IO口,匮乏的功能,并且需要投入大量精力琢磨相关说明文档。为此开发人员针对KUKA实时通讯,做了一些开源的接口使得上位机与机械臂的通讯更为简单。

huhu7777的博客 3295

CentOS8静默安装Oracle11.2.0.1

背景 新安装oracle,用静默安装方式就不需要安装图形界面了,省时省力。 前期准备工作与图形化安装一样,如创建用户|用户组、环境变量、内核参数、创建目录等. 可参考图形化安装,链接:https://blog.youkuaiyun.com/heroicpoem/article/details/104229369 环境 平台 版本 操作系统 centOS 8 Oracle 11gR2 1.响应文件 响应文件的内容就是图形化安装时手工设置的选项内容。 解压后,database/response/db

heroicpoem的专栏 4520

flutter开发实战-TextPainter计算文本内容的宽度

flutter开发实战-TextPainter计算文本内容的宽度。TextPainter类可以将TextSpan渲染到画布,并根据TextPainter来获得文本内容的宽度

一名开发者 3105

YOLOv8工业缺陷检测实战:攻克光照不均难题,精度从70%到92%的全流程优化(附缺陷数据集)

YOLOv8在工业缺陷检测中突破光照不均难题,核心是“硬件控光+数据造景+模型聚焦+训练攻坚硬件控光:从源头减少光照变异,降低算法难度;数据造景:用CLAHE、合成样本让模型“见过足够多的光照情况”;模型聚焦:用ECA注意力和Focal-EIoU损失,让模型盯住缺陷而非光照;训练攻坚:分阶段+难例挖掘,强迫模型学习薄弱点。这套方案已在汽车轴承、手机外壳、PCB板3类产线落地,平均精度提升20%+,漏检率控制在0.08%以内,完全满足工业级要求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1196

Flutter图片添加水印功能,Flutter保存Widget为图片

题记 —— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。 重要消息 网易云【玩转大前端】配套课程 EDU配套 教程 Flutter开发的点滴积累系列文章 在这里采用的实现思路是使用层叠布局Stack加载图片以及水印部分,水印部分可能是一个现成的图片也可能是一个文字等其他样式的组件,然后将这个Stack使用RepaintBoundary组件包裹起来,然后通过Widget生成图片的功能从而达到实现保存图片为水印效果。 如图下图所示,加载的本地资源目录下的一张图片,

代码小疯子 5417

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Flutter】微信项目实战【03】我的界面搭建(下)

微信Flutter实战项目,包括自定义cell!

俊而不逊的博客 3818

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ios 从assets加载图片_Flutter图片添加水印功能,Flutter保存Widget为图片

添加水印,两种实现思路,一种是将图片与水印解码,然后混编再编码,另一种是通过Widget的方式合成。在这里采用的实现思路是使用层叠布局Stack加载图片以及水印部分,水印部分可能是一个现成的图片也可能是一个文字等其他样式的组件,然后将这个Stack使用RepaintBoundary组件包裹起来,然后通过Widget生成图片的功能从而达到实现保存图片为水印效果。如图下图所示,加载的本地资源...

weixin_39983051的博客 301

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Flutter经验积累、实战分享、系列教程

Flutter 从入门 到精通系列文章 本文章为 Flutter 开发中的经验积累分享、教程分享、开发笔记分享目录,持续维护中。 题记 —— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精。 github? 你可能需要 百度同步 优快云 网易云课堂教程 掘金 知乎 Flutter系列文章 头条同步 *** 目前在西瓜视频上免费刊登 Flutter 系列教程,每日更新,欢迎关注接收提醒点击查看提示 各种系列的教程 ...

大灰狼的小绵羊哥哥的博客 880

7.Flutter教程 — 基础组件综合实例

前言:终于到了大家最期待的综合实例 阅读完这节内容可以帮你巩固提升! 正文: 老规矩先上效果图,毕竟有图有真相! 源码找我领取哦,在文章最下面~ 先分析一下效果图 第一步:实现底部跳转栏 小T这里是五个Tab,所以要先定义五个Dart文件,进行一些初始配置. 然后在main引入这五个界面,并且配置跳转的图标和文字,记得定义跳转指针哦 然后在脚手架使用: //核心代码 return Scaffold( body: page[_currentIndex], bottomNavigationBar:

txaz6的博客 479

【Flutter手摸手教学】03 Flutter main.dart详细说明

上一次我们创建了一个最简单的Flutter App,在第一个页面上显示了一个你好,Flutter文字。今天我们来详细说一下里面的每一行代码。 一、打开lib\main.dart 二、代码详细说明 导包 //导入material.dart,material.dart是Android风格的UI组件库,同样还有ios风格的UI组件库 import 'package:flutter/material.dart'; 入口main函数 //main方法是整个app的入口 void main() {

weixin_54711019的博客 1261

flutter 图解_Flutter 22: 图解 PopupMenu 那些事儿

小菜需要处理标题栏弹出对话框 PopupMenu 样式,Flutter 当然提供了一些处理方式,类似 PopupMenuEntry 等,小菜仅就最基础的使用方式进行初步的学习和整理。PopupMenuItem 基本样式PopupMenuItem 为单个 item 的弹出样式,默认为 48px 高,可根据需求自行定义。item 中可以自定义需要的样式,包括文字图片等一系列样式。@overrideWi...

weixin_42510841的博客 1024

flutter 强烈安利轮子

flutter好用轮子整理:

iamzhizhang的博客 884

ios 从assets加载图片_Flutter图片添加水印功能

题记:每一场爱情,都是为了举着灯,和自己相似身影的人相逢。喜相逢过了,就别怕伤别离在这里采用的实现思路是使用层叠布局Stack加载图片以及水印部分,水印部分可能是一个现成的图片也可能是一个文字等其他样式的组件,然后将这个Stack使用RepaintBoundary组件包裹起来,然后通过Widget生成图片的功能从而达到实现保存图片为水印效果。如图下图所示,加载的本地资源目...

weixin_39897392的博客 207

Flutter移动应用开发 - 03 Flutter基础布局介绍(MaterialAPP、Row、Column、ListTile、ListView)

查看官网和部分博客后总结Flutter的几种布局方式,包括 Row、Column、ListTile、ListView,因为涉及 MaterialAPP 的知识,顺便也总结了其他常用的几种widget的用法。

如果没有躺赢的命,那就站起来奔跑,你的努力一定会对得起这一路的颠沛流离。 841

MTools移动开发:Flutter集成AI能力实战

本文介绍了如何在星图GPU平台上自动化部署🛠️ MTools - 多功能文本工具箱镜像,实现Flutter应用的本地化AI功能集成。该镜像支持图片背景移除、语音转文字等核心场景,无需依赖云端服务,保障数据隐私并提升处理效率,适用于电商图片处理、内容创作等移动开发需求。

weixin_33628677的博客 86

Flutter学习笔记(03)-目录结构及配置文件详解

目录结构详解 这一节主要记录一下Flutter项目的目录结构及配置文件,为以后学习做个铺垫。将从以下几个方面做记录: Flutter项目结构 Flutter配置文件 2.1.1 Flutter项目结构 先来看一下新建一个Flutter项目之后生成的目录结构图 可以看到,一个完整的Flutter主要有以下几个组成部分: android 目录 ios 目录 lib 目录 test 目录 android 目录 看一下android目录都包含哪些东西? 我们可以看到,这个android目录其实就是

henkun的博客 1363

Flutter+Android/ios 桌面小组件

不需要进一步的工作。但请注意,这将使用正常的主入口点启动您的 Flutter 应用程序,这意味着您的完整应用程序可能会在后台运行。相反,您可以生成 Flutter 小部件的 png 文件,并将其保存到 Flutter 应用程序和主屏幕小部件之间的共享容器中。此步骤是可选的,这会将小部件扩展构建版本与您的应用程序版本同步,因此您在上传应用程序时不会收到 App Store Connect 版本不匹配的警告。如果您想让 Widget 能够唤醒应用程序,您需要将以下内容添加到您的AppIntent文件中。

panghaha12138的博客 3638
上一篇: flutter绘制指南04-路径的操作方法
下一篇: Flutter绘制指南06-颜色的基本操作
均摘星
博客等级 码龄7年 1112粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值