我正在 Qt-Creator 5 中创建一个模拟时钟,现在我想将数字绘制到屏幕上,但它不起作用?
painter.drawText(QPoint(50, 50), "12");
Run Code Online (Sandbox Code Playgroud)
我绝对不明白为什么它不起作用。当我用 a 替换代码中的这一行时.drawEllipse,它工作正常。所以位置/颜色不可能是问题,除非drawText不使用setBrush()颜色。
任何人都知道如何使用 正确在屏幕上绘制文本QPainter?
//previous code only draws blue ellipses with white background
QColor secondColor(240,0,0);
painter.setPen(Qt::NoPen);
painter.setBrush(secondColor);
painter.save();
QFont font=painter.font() ;
font.setPointSize(18);
painter.setFont(font);
painter.drawText(QPoint(50, 50), "12");
Run Code Online (Sandbox Code Playgroud)
因为已经到了最后paintEvent不能透支
drawtext 选项有一个“draw”表达式,指定是否应绘制文本。 http://www.ffmpeg.org/ffmpeg-filters.html#drawtext-1
我发现我们可以使用以下表达式在特定帧上、之前或之后进行书写:
:draw='eq(n,42)', :draw='lt(n,42)', :draw='gt(n,42)'
Run Code Online (Sandbox Code Playgroud)
您知道如何组合两个表达式来写入文本,例如在第 10 帧和第 42 帧之间的每一帧上?
我询问了 ffmpeg 并搜索了组合表达式的文档或示例。以下内容不起作用:
:draw='gt(n,10)&<(n,42)' -> crash
:draw='gt(n,10);lt(n,42)' -> only applies second expression
:draw='gt(n,10)':draw='lt(n,42)' -> only applies second expression
Run Code Online (Sandbox Code Playgroud)
我正在使用 ffmpeg 版本 0.8.6-4:0.8.6-0ubuntu0.12.04.1
提前致谢
现在,我想将视频的文件名作为文本添加到视频本身中。因此,如果视频位于“video2.mp4”文件中,则视频的中心应该写有“video2”。我怎样才能用drawtext做到这一点?
我正在尝试使用自己的自定义字体实现自定义textview.
有没有办法在做Super.onDraw()之前设置字体?
以便将常用字体替换为我想要使用的自定义字体.
就像是:
protected void onDraw(Canvas canvas)
{
Typeface font1 = Typeface.createFromAsset(context.getAssets(), "fonts/myfonts.ttf");
this.setTypeface(font1);
this.setTextSize(18);
super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码不起作用.
或者我别无选择,只能使用drawText()来做到这一点?
我正在图像上绘制文字.文本绘制没有任何问题,但我的文本是动态的,有时它更多的字符或有时它更少.
从下面的图像,你可以看到" 这是超过320宽度的图像的长信息,在图像的不宽.
我希望所有的消息都显示在下一行,因为我的消息是动态的,我想以320*480大小的图像显示它,这里我只显示小图像用于测试目的.
这是绘制文本的代码:
-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{
int w = img.size.width;
int h = img.size.height;
//lon = h - lon;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);
char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
CGContextSelectFont (context, // 3
"Helvetica-Bold",
15,
kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 255, 255, 255, 1);
CGContextShowTextAtPoint(context, 4, 52, text, strlen(text)); …Run Code Online (Sandbox Code Playgroud) 所以我尝试使用 HTML5 画布创建一个 Meme 生成器。我知道我可以使用以下内容在画布上书写:
ctx.filltext()
Run Code Online (Sandbox Code Playgroud)
然而,我只能在画布上写一次。有谁知道我如何可以在画布上多次书写,甚至多次书写两次。与模因生成器一样,它们在图像的顶部和底部各有一行文本。如果不可能,任何人都可以让我知道或为我指出教程/答案的方向,它可以让我在图像上书写文本,包括更改字体和字体大小以及顶部/底部、左/右。
感谢任何能提供帮助的人。
当我canvas.drawText()直接在画布上绘制文本时,如何调整字距调整?
我正在使用 ffmpeg 库在特定时间在视频上绘制文本,我成功做到了现在我需要将文本从一个位置移动到另一个位置,但我不能这样做,所以任何人都可以建议我如何做到这一点
我正在使用此命令从上到下移动文本,但我无法确定从 x,y 移动到特定 x,y 的 x 和 Y
ffmpeg -i VideoInput.mp4 -vf "drawtext=enable='between(t,12,14)':fontfile=myfont.otf:text='Test test':x=(w-text_w)/2:y=w/50\*mod(t\,2):fontsize=65" -acodec copy outputVideo.mp4
Run Code Online (Sandbox Code Playgroud) ffmpeg 中有多种淡入淡出文本的方法。但我只找到了已知实际时间的解决方案。
\n\n但是,当我不知道当前的运行时间并且想要淡入和淡出文本时,我该怎么办?
\n\n假设我有一个无尽的流,我想使用zmqsend淡入文本。并且淡入淡出应该立即开始。为此,我的理解是,我需要将一些时间信息存储在变量中并用其进行计算。但是在 ffmpeg 表达式中存储变量是不可能的 - 对吗?
\n\n为了测试目的,这里有一个播放实例:
\n\nffplay -dumpgraph 1 -f lavfi "color=s=512x288:c=black,zmq,drawtext=text=\'\'"\nRun Code Online (Sandbox Code Playgroud)\n\n为了使用 zmq 添加一些文本,我现在可以运行:
\n\necho Parsed_drawtext_2 reinit text="Hello\\ World,\\ what\xe2\x80\x99s\\ up?" | zmqsend\nRun Code Online (Sandbox Code Playgroud)\n\n或者,如果我知道运行时间,10 秒后我希望文本淡入:
\n\n"text=\'Hello\\ World\':fontsize=:fontcolor=ffffff:alpha=\'if(lt(t,10),0,if(lt(t,11),(t-10)/1,if(lt(t,16),1,if(lt(t,17),(1-(t-16))/1,0))))\'"\nRun Code Online (Sandbox Code Playgroud)\n\n我现在的目标是拥有一个可以发送的表达式,以便 ffmpeg 开始淡入文本并在一定时间后淡出。
\n\n就像是:
\n\nnow=t,if(lt(t,now+10),0,if(lt(t,now+11),(t-(now+10))/1,if(lt(t,now+16),1,if(lt(t,now+17),(1-(t-(now+16)))/1,0))))\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法在表达式中存储变量,或者有其他方法来实现这一点?
\n如何使每个字符串从新行出现?
int i = 1;
char *s = *environ;
for (; s; i++) {
DrawText(hdc, s, -1, &rect,
DT_WORDBREAK | DT_EDITCONTROL | DT_BOTTOM);
s = *(environ + i);
}
Run Code Online (Sandbox Code Playgroud)