Nagut. Eigentlich wolllte ich mir weitere Bitmaps sparen, aber es lässt sich wohl nicht verhindern
Und du hast alles richtig verstanden, und ich denke so wäre es auch umzusetzten.
Aber eine Frage: Ich kann dennoch BitBlt benutzen, oder? Er hat ja alles gezeichnet...
[edit]Okay!
Es funktioniert, wenn auch umständlich
Delphi-Quellcode:
bBuffer := TBitmap.Create;
try
bBuffer.Width := pbMap.Width;
bBuffer.Height := pbMap.Height;
BitBlt(bBuffer.Canvas.Handle, xDis, yDis, bMap.Width, bMap.Width, bMap.Canvas.Handle, 0, 0, SRCCOPY);
with bBuffer.Canvas do
begin
Brush.Style := bsClear;
Pen.Style := psDot;
Pen.Color := $000000FF;
MoveTo((selectRect.X * 32) + xDis, (selectRect.Y * 32) + yDis);
LineTo(((selectRect.X + 1) * 32) + xDis, (selectRect.Y * 32) + yDis);
LineTo(((selectRect.X + 1) * 32) + xDis, ((selectRect.Y + 1) * 32) + yDis);
LineTo((selectRect.X * 32) + xDis, ((selectRect.Y + 1) * 32) + yDis);
LineTo((selectRect.X * 32) + xDis, (selectRect.Y * 32) + yDis);
end;
BitBlt(pbMap.Canvas.Handle, 0, 0, bBuffer.Width, bBuffer.Height, bBuffer.Canvas.Handle, 0, 0, SRCCOPY)
finally
FreeAndNil(bBuffer);
end;
[/edit]