delphi如何提取数据库中的内容输出到画布canvas中

delphi如何提取数据库中的内容输出到画布canvas中,第1张

你的问题是想怎么取出数据还是怎么输出到画布

画布有textout方法,可以在指定位置输出文本

Image1CanvasBrushColor

:=

clBlack;

Image1CanvasFillRect(Image1ClientRect);

Image1CanvasFontColor

:=

clRed;

Image1CanvasFontName

:=

'Times

New

Roman';

Image1CanvasFontSize

:=

18;

Image1CanvasTextOut(9,

36,

'Delphi');

合HTML5下的video和canvas的功能,你可以实时处理视频数据,为正在播放的视频添加各种各样的视觉效果。本教程演示如何使用JavaScript代码实现chroma-keying特效

本文使用的XHTML文档如下所示。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN"

<head>

<style>

body {

background: black;

color:#CCCCCC;

}

#c2 {

background-image: url(foopng);

background-repeat: no-repeat;

}

div {

float: left;

border :1px solid #444444;

padding:10px;

margin: 10px;

background:#3B3B3B;

}

</style>

<script type="text/javascript;version=18" src="mainjs"></script>

</head>

<body onload="processordoLoad()">

<div>

<video id="video" src="videoogv" controls="true"/>

</div>

<div>

<canvas id="c1" width="160" height="96"/>

<canvas id="c2" width="160" height="96"/>

</div>

</body>

</html>

首先建立一个映射关系,将数据和坐标映射,

例如:y := 400 - value[index] 05;

x := index - base;

然后在窗口中加入一个TImage。在TImage的OnPaint中绘图

首先清除屏幕 CanvasRectangle(imageClientRect);

然后CanvasMoveTo(0, 0);

使用一个循环,从可显示的第一个数据(base)开始到最新的数据(或者最大可显示的个数)未知,

反复调用CanvasLineTo(x, y);

抛砖引玉,剩下的留给您自己想象了。

canvas开发游戏存储用户数据方法:

1首先用 SharedPreference 方法适用于简单数据的保持,文如其名,属于配置性质的保存,不适合比较大的情况,默认存放在手机内存里

2 FileInputStream/FileOutputStream 此方式比较适合游戏的保存和使用,流文件数据存储可以保持较大的数据,而且通过此方式不仅能把数据存储在手机内存中,也能将数据

3 SQLite 此方式也适合游戏的保存和使用,

1

EChart在某些配置较低的手机上出现无法交互的情况,换成自定义控件解决了这个问题。

2

新建一个自定义组件,布局如下

wxml

根据官方文档的说法,最好使用canvas2d进行绘制。

3

js

通过SelectorQuery获取canvas对象,这里的in方法用于获取自定义组件中的节点。

node属性用于获取节点实例,即canvas对象,size用于获取节点尺寸,就是canvas的宽高。这里有一个坑,通过节点获取到的画布宽高,仅仅是画布的宽高,想要在真机上正常显示,还需要获取手机的密度,并将画布的宽高乘以密度,canvasContext同样缩放屏幕密度倍数。

pixelRatio,官方说明为像素比,应该就是开发android时,1dp等于多少px。

4

绘制柱状图,其实并不复杂,统计图的要素就那么多。

首先是标题,如果需要标题的话,那么就要在绘制标题时,就需要指定标题的样式,然后预留出标题周围需要的边距。然后可以把绘制标题的方法抽取一个单独的方法。

坐标轴,确认坐标轴原点的位置,要考虑预留出坐标轴名称的位置,预留刻度名称的位置。

当获取到数据时,绘制跟数据有关的部分,也就是刷新方法。

如果需要动态刷新,js的canvas需要把原有的画布内容清空,于是要有一个clear方法。

5

提示条canvas的要覆盖在统计图canvas上,同理要根据屏幕密度对画布进行调整。同时初始化一组跟统计图canvas同样的坐标系。

绑定屏幕点击事件bindtouchastart,点击屏幕时记录点击的位置,显示提示条。

6

当手指在屏幕上滑动时,监听事件bindtouchmove,根据滑动距离变化触发页面刷新,统计图canvas,提示条canvas根据需要,是否都需要刷新。

大致思路是这样, 源码 供参考。

1用img标签,然后浮在canvas上面,canvas和html结合作图才是王道。

2读取gif的二进制数据,然后用一些算法解析出来,然后一桢一帧画出来,这个的确是有的,你可以在google搜一下,有一个框架,不过这种方法不太靠谱。就是玩的。

先上一图,这个是最终效果:

再看看闪耀效果:

1、先将文字画在canvas;

2、利用getImageData()获取图像数据;

3、将图像数据中黑色(你可以用其他颜色)按一定间隔取值(获取坐标);

4、在获取的坐标画矩形(你画其他形状也是可以的);

5、使用requestAnimationFrame,变换矩形颜色。

这样就闪烁起来了~~

var i = 0

Page({

/ 页面的初始数据/data: {hideNav: false,colors: ["#fff", "#FF6E40", "#FFAB40", "#FFFF00", "#EEFF41", "#B2FF59", "#69F0AE", "#64FFDA", "#18FFFF", "#40C4FF", "#E040FB", "#FF4081", "#ff5252"],

text: '肖战',scroll: false,setting: false},

/ 生命周期函数--监听页面加载/onLoad: function (options) {let that = this, text = wxgetStorageSync('blinkText') || thisdatatext;thissetData({text})thisinit()},

init() {wxcreateSelectorQuery()select('#canvas')fields({node: true,size: true,})exec((res) => {let that = this,text = thisdatatextconst width = res[0]widthconst height = res[0]height

const canvas = res[0]nodeconst ctx = canvasgetContext('2d')const dpr = 1 //wxgetSystemInfoSync()pixelRatiocanvaswidth = width dprcanvasheight = height dprctxscale(dpr, dpr)i = (canvaswidth - thatgetByteLen(text) 100) / 2ctxfillStyle = "#ffffff";ctxfillRect(0, 0, canvaswidth, canvasheight);ctxfont = "bolder 200px Arial";ctxfillStyle = 'black';ctxtextBaseline = 'top';ctxfillText(text, 0, 100);// ctxlineWidth = 5;// ctxstrokeText(text, 0, 100);let imageData = ctxgetImageData(0, 0, canvaswidth, canvasheight)data;// consolelog(imageData)

ctxfillStyle = "#ffffff";ctxfillRect(0, 0, canvaswidth, canvasheight);

thisdatacanvas = canvasthisdatactx = ctxthisdataimageData = imageDataconsolelog(canvaswidth, canvasheight)// thisdrawText()const renderLoop = () => {thisdrawText()

canvasrequestAnimationFrame(renderLoop)}// canvascancelAnimationFrame(renderLoop)canvasrequestAnimationFrame(renderLoop)})},drawText() {var gap = 7,{imageData,canvas,ctx,text,scroll} = thisdataif (scroll) {if (i >= canvaswidth) {i = -canvaswidth}i += 2}

ctxclearRect(0, 0, canvaswidth, canvasheight)for (var h = 0; h < canvasheight; h += gap) {for (var w = 0; w < canvaswidth; w += gap) {var position = (canvaswidth h + w) 4;var r = imageData[position],g = imageData[position + 1],b = imageData[position + 2];

if (r + g + b == 0) {ctxfillStyle = thisdatacolors[Mathfloor(Mathrandom() thisdatacolorslength)];ctxfillRect(w + i, h, 5, 5);}}}

},toggleSetting() {thissetData({setting: thisdatasetting false : true})},setText(e) {

let that = thiswxcloudcallFunction({name: 'msgSecCheck',data: {op: 'textCheck',content: edetailvalue},success(res) {consolelog('ContentCheck-res', res)if (resresultcode == 300) {consolelog(resresultmsg)wxshowToast({icon: 'none',title: resresultmsg,})thatsetData({'text': ''})} else {thatsetData({setting: false,'text': edetailvalue})thatinit()}},fail(err) {consolelog('ContentCheck-errxxxx', err)

}})

},getByteLen(str) {var len = 0;for (var i = 0; i < strlength; i++) {var length = strcharCodeAt(i);if (length >= 0 && length <= 128) {len += 1;} else {len += 2;}}consolelog('文字长度',len)return len;},donothing() {

},/ 生命周期函数--监听页面初次渲染完成/onReady: function () {

},

/ 生命周期函数--监听页面显示/onShow: function () {

},

/ 生命周期函数--监听页面隐藏/onHide: function () {

},

/ 生命周期函数--监听页面卸载/onUnload: function () {wxsetStorage({data: thisdatatext,key: 'blinkText',})},

/ 页面相关事件处理函数--监听用户下拉动作/onPullDownRefresh: function () {

},

/ 页面上拉触底事件的处理函数/onReachBottom: function () {

},

/ 用户点击右上角分享/onShareAppMessage: function () {

}})

以上就是关于delphi如何提取数据库中的内容输出到画布canvas中全部的内容,包括:delphi如何提取数据库中的内容输出到画布canvas中、如何使用Canvas实时处理Video、如何将采集到的数据通过delphi canvas 用曲线实时显示出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9534537.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存