
[英]Changing Graphics32's TImgView32's resampler kernel on the fly
[英]Broken scrollbars in Graphics32's TImgView32
我想在 TImgView32 上显示图像,但滚动条明显坏了。 当我放大时,调整 window 的大小,然后缩小我可以看到:
我已将 ImgView321.ScrollBars.Visibility 设置为 svAuto 所以现在不应该有任何滚动条。
这是我的整个代码。 单元1.dfm:
object Form1: TForm1
Left = 414
Top = 179
Width = 711
Height = 494
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
OnMouseWheelDown = FormMouseWheelDown
OnMouseWheelUp = FormMouseWheelUp
PixelsPerInch = 96
TextHeight = 13
object ImgView321: TImgView32
Left = 0
Top = 0
Width = 695
Height = 454
Align = alClient
Bitmap.ResamplerClassName = 'TNearestResampler'
BitmapAlign = baCustom
Scale = 1.000000000000000000
ScaleMode = smScale
ScrollBars.ShowHandleGrip = True
ScrollBars.Style = rbsDefault
ScrollBars.Size = 17
ScrollBars.Visibility = svAuto
OverSize = 0
TabOrder = 0
end
end
和 Unit1.pas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, GR32_Image;
type
TForm1 = class(TForm)
ImgView321: TImgView32;
procedure FormCreate(Sender: TObject);
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ImgView321.Bitmap.LoadFromFile('1.bmp');
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
ImgView321.Scale := ImgView321.Scale / 2;
ImgView321.Refresh;
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
ImgView321.Scale := ImgView321.Scale * 2;
ImgView321.Refresh;
end;
end.
它似乎解决了这个问题而不是
ImgView321.Invalidate;
或者
ImgView321.Refresh;
我只是做:
ImgView321.ScrollBars.Visibility := svHidden;
ImgView321.ScrollBars.Visibility := svAuto;
重新绘制滚动条似乎有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.