ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 BackBuffer

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

View 
UserName:
Password:
Format  Bold Italicized Underline  Align Left Centered Align Right  Horizontal Rule  Insert Hyperlink   Browse for an image to attach to your post Browse for a zip to attach to your post Insert Code  Insert Quote Insert List
   
Message 

 

Emoji
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Black Eye [B)]
Frown [:(] Shocked [:0] Angry [:(!] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
w2m Posted - May 03 2016 : 16:00:01
procedure TForm1.ImageEnView1DrawBackBuffer(Sender: TObject);
var
  ix1: Integer;
  iy1: Integer;
  ix2: Integer;
  iy2: Integer;
  iz: double;
begin
  iz := ImageEnView1.Zoom / 100;
  ImageEnView1.BackBuffer.Canvas.Pen.Width := 1;
  ImageEnView1.BackBuffer.Canvas.Pen.Color := clBlue;
  ImageEnView1.BackBuffer.Canvas.Pen.Style := psSolid;
  ImageEnView1.BackBuffer.Canvas.Brush.Style := bsClear;
  ix1 := ImageEnView1.OffsetX*Round(iz);
  iy1 := ImageEnView1.OffsetY*Round(iz);
  ix2 := (ImageEnView1.IEBitmap.Width-1) * Round(iz);
  iy2 := (ImageEnView1.IEBitmap.Height-1) * Round(iz);
  ImageEnView1.BackBuffer.Canvas.Rectangle(ix1, iy1, ix2 + ix1, iy1 + iy2);
  ImageEnView1.BackBuffer.Canvas.Pen.Color := clBlack;
  ImageEnView1.BackBuffer.Canvas.MoveTo((ix2 + ix1) div 2, iy1);
  ImageEnView1.BackBuffer.Canvas.LineTo((ix2 + ix1) div 2, iy1 + iy2);
  ImageEnView1.BackBuffer.Canvas.MoveTo(ix1, iy2 div 2);
  ImageEnView1.BackBuffer.Canvas.LineTo((ix2 + ix1), iy2 div 2);
end;

This should draw a blue rectangle along the border with a ("+" crosshair in the center), but this fails to draw correctly when zoomed. Why?

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
2   L A T E S T    R E P L I E S    (Newest First)
w2m Posted - May 04 2016 : 10:46:06
Thanks Nigel.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
xequte Posted - May 03 2016 : 18:52:40
Hi Bill

You don't need to adjust for Zoom with Offset and Extent values (as they are the "onscreen" values):

procedure Tfmain.ImageEnView1DrawBackBuffer(Sender: TObject);
var
  ix1: Integer;
  iy1: Integer;
  ix2: Integer;
  iy2: Integer;
begin
  ix1 := ImageEnView1.OffsetX ;
  iy1 := ImageEnView1.OffsetY ;
  ix2 := ImageEnView1.ExtentX ;
  iy2 := ImageEnView1.ExtentY ;
  
  ImageEnView1.BackBuffer.Canvas.Pen.Width := 1;
  ImageEnView1.BackBuffer.Canvas.Pen.Color := clBlue;
  ImageEnView1.BackBuffer.Canvas.Pen.Style := psSolid;
  ImageEnView1.BackBuffer.Canvas.Brush.Style := bsClear;
  ImageEnView1.BackBuffer.Canvas.Rectangle(ix1, iy1, ix1 + ix2, iy1 + iy2);
  
  ImageEnView1.BackBuffer.Canvas.Pen.Color := clBlack;
  ImageEnView1.BackBuffer.Canvas.MoveTo( ix1 + ix2 div 2, iy1 );
  ImageEnView1.BackBuffer.Canvas.LineTo( ix1 + ix2 div 2, iy1 + iy2);
  ImageEnView1.BackBuffer.Canvas.MoveTo( ix1, iy1 + iy2 div 2);
  ImageEnView1.BackBuffer.Canvas.LineTo( ix1 + ix2, iy1 + iy2 div 2);
end;



Nigel
Xequte Software
www.xequte.com
nigel@xequte.com