标签: drawtext

Qt - QPainter.DrawText 不绘制文本

我正在 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不能透支

c++ qt qpainter drawtext qt5

2
推荐指数
1
解决办法
2万
查看次数

FFmpeg 在一系列帧上绘制文本

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)&&lt(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

提前致谢

ffmpeg draw drawtext

2
推荐指数
1
解决办法
3160
查看次数

在视频中显示文件名(fmpeg-drawtext)

现在,我想将视频的文件名作为文本添加到视频本身中。因此,如果视频位于“video2.mp4”文件中,则视频的中心应该写有“video2”。我怎样才能用drawtext做到这一点?

ffmpeg drawtext

2
推荐指数
1
解决办法
2779
查看次数

自定义textview使用自定义字体

我正在尝试使用自己的自定义字体实现自定义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()来做到这一点?

android android-widget drawtext ondraw typeface

1
推荐指数
1
解决办法
2760
查看次数

带图文的图像上的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)

uiimageview quartz-2d drawtext ios

1
推荐指数
1
解决办法
1368
查看次数

HTML5 画布上的多行文本

所以我尝试使用 HTML5 画布创建一个 Meme 生成器。我知道我可以使用以下内容在画布上书写:

ctx.filltext()
Run Code Online (Sandbox Code Playgroud)

然而,我只能在画布上写一次。有谁知道我如何可以在画布上多次书写,甚至多次书写两次。与模因生成器一样,它们在图像的顶部和底部各有一行文本。如果不可能,任何人都可以让我知道或为我指出教程/答案的方向,它可以让我在图像上书写文本,包括更改字体和字体大小以及顶部/底部、左/右。

感谢任何能提供帮助的人。

html drawtext html5-canvas

1
推荐指数
1
解决办法
7422
查看次数

1
推荐指数
1
解决办法
1677
查看次数

ffmpeg 移动文字 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 drawtext

1
推荐指数
1
解决办法
3840
查看次数

ffmpeg:使用 zmq 绘制文本淡入/淡出

ffmpeg 中有多种淡入淡出文本的方法。但我只找到了已知实际时间的解决方案。

\n\n

但是,当我不知道当前的运行时间并且想要淡入和淡出文本时,我该怎么办?

\n\n

假设我有一个无尽的流,我想使用zmqsend淡入文本。并且淡入淡出应该立即开始。为此,我的理解是,我需要将一些时间信息存储在变量中并用其进行计算。但是在 ffmpeg 表达式中存储变量是不可能的 - 对吗?

\n\n

为了测试目的,这里有一个播放实例:

\n\n
ffplay -dumpgraph 1 -f lavfi "color=s=512x288:c=black,zmq,drawtext=text=\'\'"\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了使用 zmq 添加一些文本,我现在可以运行:

\n\n
echo Parsed_drawtext_2 reinit text="Hello\\ World,\\ what\xe2\x80\x99s\\ up?" | zmqsend\n
Run 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))))\'"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我现在的目标是拥有一个可以发送的表达式,以便 ffmpeg 开始淡入文本并在一定时间后淡出。

\n\n

就像是:

\n\n
now=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))))\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有办法在表达式中存储变量,或者有其他方法来实现这一点?

\n

ffmpeg drawtext

1
推荐指数
1
解决办法
791
查看次数

WinAPI DrawText 新行

如何使每个字符串从新行出现?

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)

windows winapi drawtext

0
推荐指数
1
解决办法
1352
查看次数