微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在delphi画布上模拟高亮笔

我有一个制作数字白板的项目.我用普通笔完成了,我必须模拟高亮笔的工作.

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

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

但我不知道如何使用它来模拟高亮笔.
那么,如何利用这个功能来模拟高亮笔呢?

解决方法

就像是

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

也许?

Screenshot http://privat.rejbrand.se/canvaspenmask.png

亲自尝试一下:

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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐