我有一个制作数字白板的项目.我用普通笔完成了,我必须模拟高亮笔的工作.
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;