在Delphi画布上模拟荧光笔效果

5

我有一个数字白板项目,已经完成了普通笔的功能,现在需要模拟荧光笔的工作。

if drawingNow then
  Image1.Canvas.LineTo(x, y);

Delphi中没有透明度设置。我在GDI中找到了AlphaBlend函数http://msdn.microsoft.com/en-us/library/dd183351.aspx

但是我不知道如何使用它来模拟荧光笔。 那么,如何利用这个函数来模拟荧光笔?


3
“highlight pen”指的是荧光笔。 - Ondrej Kelle
这里提到的荧光笔是指高亮笔,详情请参见http://en.wikipedia.org/wiki/Highlighter。 - Niyoko
顺便问一下,为什么你写 if drawingNow = True then 而不是 if drawingNow then?这就像是在问某人“语句‘你饿了吗’是否为真?”而不是简单地问“你饿了吗?”。 - Andreas Rejbrand
哈哈哈..我知道了。当我写那个的时候有点困。我会编辑我的问题.. :D - Niyoko
你需要透明地绘制它吗?也许你可以先绘制黄色部分(使用粗笔或 Canvas.DrawRect),然后再写文本。 - GolezTrol
我必须模拟白板/纸的工作原理。首先,讲师会在白板上写字,然后为了向学生展示重要部分,讲师可以使用荧光笔。 - Niyoko
1个回答

6

类似以下内容

Canvas.Pen.Color := clYellow;
Canvas.Pen.Width := 12;
Canvas.Pen.Mode := pmMask;
Canvas.LineTo(sth, sth);

也许吗? 屏幕截图 自己试试吧:
procedure TForm4.FormPaint(Sender: TObject);
const
  S = 'Jag heter Andreas Rejbrand och bor ' 
    + 'i Katrineholm, 119 kilometer från Stockholm. Jag studerar för närvarande på '
    +'masterprogrammet i fysik (med lika mycket matematik) ' 
    + 'vid Linköpings universitet, där jag också arbetar som lärare i matematik vid '
    +'Matematiska institutionen (MAI). Bland mina största intressen återfinnes också '
    +'just matematiken och fysiken. Matematiken är '
    +'kanske människans viktigaste vetenskap, ty alla andra vetenskaper använder den. '
    +'I själva verket använder man matematik varje '
    +'gång man drar en slutsats. Mer abstrakt matematik än vad man finner i '
    +'vardagslivet har också möjliggjort all vår tekniska (och kulturella!) '
    +'utveckling. Naturvetenskapen, å sin sida, med fysiken i '
    +'spetsen, erbjuder en unik förståelse av hela universums natur - allt från '
    +'universums födelse, struktur och moderna innehåll i form av bl.'
    +'a. stjärnor, planeter och asteroider, ända ner till utvecklingen och funktionen '
    +'hos jordens alla organismer - från de allra första mikroorganismerna till '
    +'den mer komplexa '
    +'människokroppen. Naturvetenskapen ger, förutom förståelsens intellektuella '
    +'stimulans i sig, vardagsapplikationer till både nytta och nöje likväl som en '
    +'korrekt bild av hur allt i naturen förhåller sig, '
    +'vilket kan ge rationaliserade värderingar i samhället.';
var
  R: TRect;
  St: string;
begin
  St := S;
  R := ClientRect;
  Canvas.TextRect(R, St, [tfWordBreak]);
  Canvas.Pen.Color := clYellow;
  Canvas.Pen.Width := 12;
  Canvas.Pen.Mode := pmMask;
  Canvas.MoveTo(0, 20);
  Canvas.LineTo(ClientWidth - 8, 20);
end;

3
谢谢你帮我修复字符串格式!看起来很棒! - Andreas Rejbrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接