Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
FreePascal / Lazarus
|
Re: auf nächsten buchstaben runden ?
23. Nov 2006, 18:29
mit folgenden qullcode habe ich den ersten schrit geschaft:
Delphi-Quellcode:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
sx,sy,i:Integer;
v,v1,v2:TRect;
begin
if ssLeft in shift then begin
bufbmp.Canvas.pen:=oldpen;
bufbmp.Canvas.Brush:=oldBrush;
bufbmp.Canvas.Brush.color:=clBlack;
bufbmp.Canvas.Brush.Style:=bsSolid;
bufbmp.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);
bufbmp.Canvas.Brush:=oldBrush;
bufbmp.Canvas.Pen:=oldPen;
bufbmp.Canvas.pen.color:=clAqua;
for i:=0 to obj.count-1 do begin
v1.left:=tCharItem(obj.items[i]).cx;
v1.top:=tCharItem(obj.items[i]).cy;
v1.Right:=v1.left+bufbmp.Canvas.TextWidth(tCharItem(obj.items[i]).Char);
v1.Bottom:=v1.top+bufbmp.Canvas.TextHeight(tCharItem(obj.items[i]).Char);
v2.left:=mx;
v2.top:=my;
v2.Right:=x;
v2.Bottom:=y;
if IntersectRect(v,v2,v1) = True then begin
// ShowMessage(IntTostr(v1.right) + '\' + IntTostr(x));
// sx:=x+v1.right;
// memo2.lines.add();
caption:=IntTostr(v1.Right-x) ;
sx:=x+(v1.Right-x);
// break;
end;
end;
bufbmp.canvas.Rectangle(mx,my,sx,y);
bufbmp.Canvas.Brush:=oldBrush;
bufbmp.Canvas.Pen:=oldPen;
DrawText;
end;
end;
im moment muss ich noch y und mx und my anpassen aber ich denke das werde ich schaffen !!!
Michael Springwald MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
|
|
Zitat
|