Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simulating highlight pen on delphi canvas

Tags:

delphi

gdi

I have a project to make digital whiteboard. I have done with ordinary pen, and I must simulate work of highlight pen.

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

There is no transparency setting in delphi. I found AlphaBlend function in GDI http://msdn.microsoft.com/en-us/library/dd183351.aspx

But i have no clue how to use this to simulate highlight pen. Then, how to utilize this function to simulate highlight pen?

like image 836
Niyoko Avatar asked Nov 21 '12 12:11

Niyoko


1 Answers

Something like

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

perhaps?

Screenshot

Try it yourself:

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;
like image 105
Andreas Rejbrand Avatar answered Sep 21 '22 08:09

Andreas Rejbrand