首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Delphi - 绘制到字符串网格中选定单元格的画布 - 可能吗?

当然可以!在 Delphi 中,你可以使用 TStringGrid 控件来创建一个字符串网格,并使用画布(Canvas)来绘制到选定的单元格中。以下是一个简单的示例,展示了如何在 TStringGrid 控件的选定单元格中绘制画布:

  1. 首先,在 Delphi 中创建一个新的 VCL 应用程序,并在窗体上添加一个 TStringGrid 控件。
  2. 在 TStringGrid 控件的事件属性中,选择 OnDrawCell 事件,并添加以下代码:
代码语言:delphi
复制
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Canvas: TCanvas;
  Text: string;
begin
  Canvas := TStringGrid(Sender).Canvas;
  Text := TStringGrid(Sender).Cells[ACol, ARow];

  if (ACol = TStringGrid(Sender).Col) and (ARow = TStringGrid(Sender).Row) then
  begin
    Canvas.Brush.Color := clYellow;
    Canvas.Font.Color := clBlue;
  end
  else
  begin
    Canvas.Brush.Color := clWhite;
    Canvas.Font.Color := clBlack;
  end;

  Canvas.FillRect(Rect);
  Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Text);
end;

这段代码将在选定的单元格中绘制一个黄色背景,并将文本颜色设置为蓝色。对于其他单元格,背景将为白色,文本颜色为黑色。

  1. 运行应用程序,你将看到一个具有绘制到字符串网格中选定单元格的画布的简单应用程序。

这只是一个简单的示例,你可以根据需要修改代码以满足你的需求。希望这个答案对你有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

有趣 CSS 像素艺术

原文:fun-times-css-pixel-art 译者:nzbin 友情提示:由于国内网络原因,CodePen可能会打不开或者非常慢,请耐心等待!...创建网格 第一件事,我们需要一张绘制我们像素化作品画布。我们有多种方式来创建网格。一种方式是使用标准 HTML 元素,它每一行都包含固定宽度单元格。...如果想获得更大画布就给单元格一个更大尺寸。如果想从 8-bit 分辨率改成 16-bit 分辨率,只需要将表格每一行单元格数量翻倍。 另外一种建立网格方法是用两个 div 代替表格。.../* The third cell in our grid */ .pixel:nth-child(3) { background: orange; } 正如你想象那样,这个列表会很长,它取决于网格单元格数量和设计细节...See the Pen Ash and Pikachu box-shadow Pixel Art by Andrew (@AstroDroid) on CodePen. canvas  可以绘制矩形

1.2K70

对比excel,用python绘制柱状图时添加table数据表

我们第88篇原创 作者:才哥 ---- ☆ 大家好,我是才哥。 最近在做数据可视化时候,希望在图上同时显示数据表。关于这个需求,用excel可以比较方便,直接快速布局中选择布局5即可。...Excel简单绘制 就很简单了,直接选中数据插入柱状图,然后在图表工具-设计-快速布局中选择相应布局即可。 ? 案例数据及效果 ? excel图表设计->快速布局—>布局5 2....图表table绘制 先看看图表table绘制,我们拿案例数据来单独绘制看看: # 创建画布 fig, ax = plt.subplots(figsize=(10, 4), dpi=100) # table...table 关于 plt.table参数介绍如下: cellText:表格单元格文本,字符串换行符暂不支持,可能导致文本超出单元格边界 cellColours:表格单元格背景色 cellLoc:表格单元格文本对齐方式...colLoc:表格列表头文本对齐方式,取值范围为{'full', 'left', 'right'},默认值为'left' loc:单元格相对于子图位置 bbox:绘制表格边界框 最后,我们需要做就是将上述两个图进行组合

1.8K10

「Adobe国际认证」Adobe Photoshop,如何裁剪并拉直照片?

裁剪边界显示在照片边缘上。 2.在选项栏中,选择“内容识别”。默认裁剪矩形会扩大,以包含整个图像。 3.使用图像周围手柄,拉直或旋转图像。或者,将画布范围扩展图像原始大小之外。...画布会自动调整大小以容纳旋转像素。 要拉直照片,请执行以下操作之一: 将指针放置在角句柄靠外一点位置,然后拖动以旋转图像。裁剪框内会显示网格,并且图像会在其后面旋转。...当处理包含梯形扭曲图像时使用透视裁剪工具。当从一角度而不是以平直视角拍摄对象时,会发生石印扭曲。例如,如果从地面拍摄高楼照片,则楼房顶部边缘看起来比底部边缘要更近一些。...1.选取“图像”>“画布大小”。 2.执行下列操作之一: 在“宽度”和“高度”框中输入画布尺寸。从“宽度”和“高度”框旁边弹出菜单中选择所需测量单位。...4.从“画布扩展颜色”菜单中选取一个选项: “前景”:用当前前景颜色填充新画布 “背景”:用当前背景颜色填充新画布 “白色”、“黑色”或“灰色”:用这种颜色填充新画布 “其它”:使用拾色器选择新画布颜色

2.8K10

不如用最经典工具画最酷炫

下面,我将请这两位 office 老员工(WORD 没有排面)带大家绘制不一样酷炫图表,在层层推进中感受画图快乐吧!(多图预警) EXCEL篇 1、球棍图 ? 面对这样一组数据应该画什么图呢?...第一反应可能是柱状图和折线图组合,柱子表示数量,次坐标轴折线表示占比,例如下图。 ? 然后我们可以通过操纵坐标轴尺度,添加数据标签、折线节点,隐藏轴标签和网格线,使得图形更加干练直观。 ?...此时,散点已就位,接下来在散点处右键-设置数据系列格式,在标记项中将散点放大足够大小。 ? ? 之后添加数据标签,并在数据标签处右键-设置数据标签格式,选择单元格值并去掉原始值,再设置居中。...面对如此多行多列数据让人不禁感到苦恼,用常规图形画出来一很乱!一堆折线?还是一堆柱子? ? 然而我们可能已经在许多地方见过这样好看图形,笛卡尔坐标系热力图。 ?...变形至合适大小,图表画布边框左上角和左下角与单元格对齐,合并适当单元格用作对象标签。 ? 复制大法好! ?

2.6K20

表格技术七十二变|手把手教你用Canvas电子表格做电子签名

从工作数据汇总分析出门收据各种电子发票,这些都是由电子表格制作出来。 不过大家对电子表格印象可能停留在这里: ? 标准行列数据统计表格样式。 但其实,表格也可以是这样: ?...而今天,客户在实际项目中需要实现内容长这样: ? 看到这里,有些小伙伴可能会说这有什么难,虽然这个东西长相酷似word, 但不就是电子表格去掉边框线? ?...环境准备:安装SpreadJS 前端表格插件,并通过插件绘制canvas画布。...,理论上也是能开发出能够直接签名单元格。...用户可以直接在单元格进行签名,有兴趣小伙伴可以尝试用自定义单元格实现。

2.1K20

Unity性能调优手册8UI:Canvas,Layout,RaycastTarget,Mask,TextMeshPro,UI显示

github.com/CyberAgentGameEntertainment/UnityPerformanceTuningBible/ uGUI (Unity标准UI系统)和TextMeshPro(将文本绘制屏幕机制...变化是任何变化,如主动切换、移动或调整大小,从外观大变化第一眼看不出来小变化。重建过程成本很高,所以如果执行太多次,或者Canvas中ui数量很大,性能就会受到不利影响。...但是,您需要仔细考虑如何拆分它们,因为拆分画布将不适用于绘制批次。 Tips 当画布嵌套在画布下时,拆分画布也有效。如果子画布中包含元素发生变化,则只会运行子画布重建,而不会运行父画布。...布局重建,像网格重建一样,是一个昂贵过程。 为了避免由于布局重建而导致性能下降,尽可能避免使用布局组件是有效。...相反,使用SetText方法被设计成生成尽可能字符串,当要显示文本频繁变化时,这是一个性能优势。 TextMeshPro这个特性在与ZString 结合使用时也非常强大。

29030

python绘图与数据可视化(二)

同时 Matplotlib 也支持以脚本形式嵌入 IPython shell、Jupyter 笔记本、web 应用服务器中使用。...比如,[ 0.1, 0.1, 0.8, 0.8],它代表着从画布 10% 位置开始绘制, 宽高是画布 80% legend()绘制图例 axes 类 legend() 方法负责绘制画布图例,它需要三个参数...,如下所示: ax.legend(handles, labels, loc) labels 是一个字符串序列,用来指定标签名称; loc 是指定图例位置参数,其参数值可以用字符串或整数来表示; handles...参数,它也是一个序列,它包含了所有线型实例; **axes.plot()**这是 axes 类基本方法,它将一个数组值与另一个数组绘制成线或标记,plot() 方法具有可选格式字符串参数,...grid() 方法可以开启或者关闭画布网格(即是否显示网格)以及网格主/次刻度。

12010

delphi vcl_delphi数据类型

TBevel提供了一个更美观窗体。 TStringGrid和TDrawGrid类提供了一种表示网格信息方法。...例如,TDBGrid组件是用来显示网格数据库表,在这种情况下,TDBGrid充当用户与数据库接口,通过TDBGrid,用户可以查看和编辑数据库表。...画布提供了可以用来画画面,它用方法是MoveTo、LineTo和TextOut,通过用Draw或StretchDraw方法可以再画布上显示位图。画布可以用来在其上画画。...所有显示文本组件类都有TFont类。 除了这里列出GDI类以外,还有一些其他类,在以后Delphi学习过程中,我们将会学习更多有关这方面的类,并掌握使用它们。...更多这些类详细信息请大家自己看看Delphi VCL Help。 这不是全部 讨论到这里并没有讨论到所有的VCL类,但这里所涉及类在应用程序中用到可能性很大。

2.7K10

《算法图解》-9动态规划 背包问题,行程最优化

可能认为,计算最后一个单元格价值时,我使用了不同公式。那是因为填充之前单元格时,我故意避开了一些复杂因素。其实,计算每个单元格价值时,使用公式都相同。 这个公式如下。...沿着一列往下走时,最大价值有可能降低? 答案:不可能。每次迭代时,你都存储当前最大价值。最大价值不可能比以前低! 练习:假设你还可以选择——MP3播放器,它重1磅,价值1000美元。...也就是说,各行排列顺序无关紧要。 2.3 可以逐列而不是逐行填充网格 自己动手试试吧!...但约束条件不是背包容量,而是有限时间;不是决定该装入哪些 商品,而是决定该去游览哪些名胜。请根据这个清单绘制动态规划网格。...2.9 最优解可能导致背包没装满 完全可能,假设你选了一个3.5磅钻石。 练习: 假设你要去野营。你有一个容量为6磅背包,需要决定该携带下面的哪些东西。

88841

最长公共子序列问题

---- 绘制网格 通过上一次背包问题学习,给了我一些很重要启示: 每种动态规划解决方案都设计网格。 动态规划可以帮助你在给定约束条件下找到最优解。...别忘了,单元格值通常就是你要优化值。在这个例子中,这很可能是一个数字:两个字符串都包含最长子串长度。 如何把这个问题划分成子问题呢?...你可能需要比较字符串:不是比较hish和fish,而是先比较his和fis。每个单元格都将包含着两个字符串最长公共字符串长度。或许有了一些线索: ?...---- 填充网格 现在,你很清楚网格应是怎么样。填充该网格每个单元格时,该使用什么样公式呢?由于你已经知道了答案——hish和fish最长子序列为ish,所以可以作点弊。...对于前面的背包问题,最终答案总是在最后单元格中。单对于LCS问题来说,答案为网格中最大数字——它可能并不位于最后单元格中。例如单词hish和vista最长公共子串时,网格如下: ?

1.4K40

HTML界“苏炳添”——详解Canvas优越性能和实际应用

Canvas在刚推出时主打的优势就是更快渲染速度,堪称HTML届“苏炳添”,刷新了人们对Web页面元素绘制速度印象。但Canvas优势仅限于此?...在渲染Canvas时,浏览器只需要在JavaScript引擎中执行绘制逻辑,在内存中构建出画布,然后遍历整个画布里所有像素点颜色,直接输出到屏幕就可以了。...GDI/GDI+),把这些中间产物绘制屏幕。...,浏览器需要对表格所有单元格本身内容进行渲染,同时还涉及丰富数据处理,情况就完全不同了。...回到电子表格应用场景,业内已经出现了使用Canvas绘制画布表格组件,这类组件在渲染数据层时不仅无需重复创建和销毁DOM元素,在画布绘制过程中,也比Dom元素渲染限制更少。

1.6K20

看完这本攻略,Canvas新手小白也可以创建惊人特效

这里我们可以创建一个绘制网格方法,然后每次render时候调用,这样就可以对图形定位有一个直观感受了。再也不用抓瞎。 首先我们要计算好网格数量,将所有计算好网线放入一个数组中。...虽然我们也可以动态计算,网格位置,但是从性能上考虑,canvas中凡是在绘图之前可以确认位置都提前计算好,这样可以提高性能。这里我留了一点空间给坐标值,因此并不是全屏网格。...我们假想所有的canvas配置,如fillSytle,strokeStyle状态都封装在一个对象之中,然后每次save这个对象,就将这个对象push一个Cavans状态数组之中,之后我们可能改变了其中一些属性...再写一遍属性配置?不,这个时候我们可以用restore,一键切换至上一个状态。也就是当前配置全部失效。所有属性值回退到之前一个状态。...sx,sy,swidth,sheight,dx,dy,dwidth,dheight 这个比较难以理解,前四个是对原始图片操作,也就获取原始图片区域,后四个参数就是图片需要绘制画布位置和大小。

95330

鸿蒙 OpenHarmony 移植表格渲染引擎总结

首先我们从画布左上角 X 和 Y 轴起始位置开始绘制游戏背景。...,我们配合偏移量和重力因素,很轻易就能绘制出小鸟飞行轨迹,我们这里还顺便把得分绘制屏幕左下角,以便实时展示玩家得分。...他也没办法保证把 Excel 功能恢复 95%,没法保证 95% Excel 文件正常打开。 Bbcallen:不可能,微软自己都做不到。...cell 单元格 坐标系建立 有了画布,我们就要开始筹备渲染,我们 table 类里面封装 render 方法,render 方法主要绘制四个区域,也就是类似数学上笛卡尔直角坐标系四个想象,涉及格子线段...,比如合并单元格和选中单元格,而 renderLines 则会遍历每行每列去绘制所有行列间隔线。

2.9K20

sketch快捷键大全

显示/隐藏标尺 ⌃ P 显示/隐藏像素 ⌃ X 显示/隐藏像素网格 ⌃ G 显示/隐藏网格 ⌃ L 显示/隐藏布局 ⌃ E 显示/隐藏切片 ⌃ F 显示/隐藏原型 ⌘ F 在图层列表中过滤 ⌃ ⌘ K...Space -拖动 在确认之前放置新绘制图层 选择图层 点击 选择图层 单击并拖动 选择多个图层 ⌥-拖动 在拖动边界内选择图层 双击图层 选择分组图层 ⌘- 点击图层 选择任何图层 ⌥- 点击图层...选择一个模糊图层 ⌘ A 全选 ⇧ ⌘ A 选择所有画板 ⇧-Click 在画布中将图层添加到选择/取消选择图层 ⇧ ⌘-Click 在“画布”中将图层从组添加到选区 ⌘-Click 在图层列表中添加图层选择...插入扁平图像 / 在图层名称中 包括导出文件夹 缩放和聚焦 ⌘ 0 缩放至100% ⌘ 1 缩放到画布所有元素 ⌘ 2 缩放到选定图层 ⌘ 3 在“画布”中居中选图层 Z-拖动 缩放到区域...要添加自己自定义快捷方式,请打开“系统偏好设置”并导航“ 键盘”>“快捷方式”>“应用程序快捷方式”,然后单 在弹出菜单中,选择“应用程序”下“Sketch”。您现在可以定义自定义快捷方式。

4.4K50

【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像

,核心逻辑大概是这样:通过设置 input 属性 type 为 file,来获取上传头像绘制一个静态 canvas 页面上,用来当作画布使用 canvas drawImage 方法将获取头像绘制画布上使用...putImageData 方法重新绘制画布上通过 canavs toDataURL 方法将图片转换为 base64 字符串将 base64 字符串赋值给携带 download 属性 a 标签...e.target.files[0]; // 创建图像对象 var img = new Image(); img.onload = function() { // 将图像绘制画布上...data[i] = data[i + 1] = data[i + 2] = 255; // 设置为白色 } } // 将处理后像素数据重新绘制画布上...对于一些特定企业,在线IDE可能引发敏感项目和保密项目的数据泄漏。项目运行中偶尔会出现意外错误,如图所示,希望能排查。图片

14440

老鸟带你画tiled lines

老鸟:tile 是瓷片意思,就是在瓷片中画线,最终形成线条具有一艺术美感。我在用 processing 绘制瓷片线,这就是 tiled lines,咋样,好看不? ? 小菜:哇塞,好神奇耶!...; // 画线黑色 noFill(); // 无填充模式 noLoop(); // 不进行帧循环 } 老鸟:这一步比较简单,主要是设置画布尺寸以及画笔相关属性。...我们把问题拆解成两部分: 1)将画布根据设定网格大小,拆分成一个个网格 想象我们房屋地板面积是 1200 * 760, 每一个地板瓷砖大小tileSize为 40。...2)在每一个瓷片中,随机绘制左上到右下或者右上到左下对角线。 瞧,我画了一张图: ?...---- 小菜与老鸟后期会不定期更新一些 Processing 绘制代码思路分析,欢迎关注不迷路。

53030
领券