5

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?

Niyoko
  • 7,512
  • 4
  • 32
  • 59
  • 3
    What do you mean by "highlight pen"? – Ondrej Kelle Nov 21 '12 at 13:03
  • highlight pen is hightlighter pen mentioned here http://en.wikipedia.org/wiki/Highlighter – Niyoko Nov 21 '12 at 13:06
  • As a sidenote, why do you write `if drawingNow = True then` instead of `if drawingNow then`? It's like asking someone "Does the statement 'are you hungry' evaluate to true?" instead of simply "Are you hungry?". – Andreas Rejbrand Nov 21 '12 at 13:06
  • Hahaha.. I know. I little sleepy when wrote that. I will edit my question.. :D – Niyoko Nov 21 '12 at 13:08
  • Do you need to draw it transparently? Maybe you can just draw the yellow part first (either using a thick pen or using `Canvas.DrawRect`) and write the text afterwards. – GolezTrol Nov 21 '12 at 13:22
  • I must simulate how whiteboard/paper works. First lecturer would write in whiteboard, and then to show important part to student, lecturer can use highlighter – Niyoko Nov 21 '12 at 14:19

1 Answers1

6

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;
Andreas Rejbrand
  • 105,602
  • 8
  • 282
  • 384