C++Builder中大尺寸图象的显示技巧

在C++Builder中利用TImage控件可以轻松地读入并显示图象,但TImage 控件本身不可以接收输入焦点,也没带有滚动条,在显示超出显示区域范围的大图象时,需要对TImage控件进行加强。本文提出两种最容易实现且有效的方法,满足不同应用的需求。

方法一:增加滚动条。

增加滚动条可以通过将TImage放在TScrollBox控件中来实现。步骤如下:

(1)、在窗体中放置一个TScrollBox控件,调整好其尺寸。

(2)、设置TScrollBox控件的AutoScroll属性为True。

(3)、在TScrollBox控件是放置一个TImage控件。

(4)、设置TImage控件的属性:AutoSize为True,Left为0,Top为0。经以上增强之后,如果TImage的图象比显示窗口大,滚动条会自动出现,如果图象小于显示窗口,滚动条自动消失,实现了大图象的浏览。

方法二:图象漫游。

图象漫游是指不用滚动条,通过键盘或者鼠标控制图象的移动,从而在较小的显示区域内可以浏览图象的任何部分。下面以鼠标控制为例说明。 海同科技在C++Builder中利用TImage控件可以轻松地读入并显示图象,但TImage 控件本身不可以接收输入焦点,也没带有滚动条,在显示超出显示区域范围的大图象时,需要对TImage控件进行加强。本文提出两种最容易实现且有效的方法,满足不同应用的需求。

方法一:增加滚动条。

增加滚动条可以通过将TImage放在TScrollBox控件中来实现。步骤如下:

(1)、在窗体中放置一个TScrollBox控件,调整好其尺寸。

(2)、设置TScrollBox控件的AutoScroll属性为True。

(3)、在TScrollBox控件是放置一个TImage控件。

(4)、设置TImage控件的属性:AutoSize为True,Left为0,Top为0。经以上增强之后,如果TImage的图象比显示窗口大,滚动条会自动出现,如果图象小于显示窗口,滚动条自动消失,实现了大图象的浏览。

方法二:图象漫游。

图象漫游是指不用滚动条,通过键盘或者鼠标控制图象的移动,从而在较小的显示区域内可以浏览图象的任何部分。下面以鼠标控制为例说明。 海同科技在C++Builder中利用TImage控件可以轻松地读入并显示图象,但TImage 控件本身不可以接收输入焦点,也没带有滚动条,在显示超出显示区域范围的大图象时,需要对TImage控件进行加强。本文提出两种最容易实现且有效的方法,满足不同应用的需求。

方法一:增加滚动条。

增加滚动条可以通过将TImage放在TScrollBox控件中来实现。步骤如下:

(1)、在窗体中放置一个TScrollBox控件,调整好其尺寸。

(2)、设置TScrollBox控件的AutoScroll属性为True。

(3)、在TScrollBox控件是放置一个TImage控件。

(4)、设置TImage控件的属性:AutoSize为True,Left为0,Top为0。经以上增强之后,如果TImage的图象比显示窗口大,滚动条会自动出现,如果图象小于显示窗口,滚动条自动消失,实现了大图象的浏览。

方法二:图象漫游。

图象漫游是指不用滚动条,通过键盘或者鼠标控制图象的移动,从而在较小的显示区域内可以浏览图象的任何部分。下面以鼠标控制为例说明。 在C++Builder中利用TImage控件可以轻松地读入并显示图象,但TImage 控件本身不可以接收输入焦点,也没带有滚动条,在显示超出显示区域范围的大图象时,需要对TImage控件进行加强。本文提出两种最容易实现且有效的方法,满足不同应用的需求。

方法一:增加滚动条。

增加滚动条可以通过将TImage放在TScrollBox控件中来实现。步骤如下:

(1)、在窗体中放置一个TScrollBox控件,调整好其尺寸。

(2)、设置TScrollBox控件的AutoScroll属性为True。

(3)、在TScrollBox控件是放置一个TImage控件。

(4)、设置TImage控件的属性:AutoSize为True,Left为0,Top为0。经以上增强之后,如果TImage的图象比显示窗口大,滚动条会自动出现,如果图象小于显示窗口,滚动条自动消失,实现了大图象的浏览。

方法二:图象漫游。

图象漫游是指不用滚动条,通过键盘或者鼠标控制图象的移动,从而在较小的显示区域内可以浏览图象的任何部分。下面以鼠标控制为例说明。

(1)、在窗体中放置一个TPanel控件,调整好其尺寸。

(2)、在TPanel控件是放置一个TImage控件。

(3)、设置TImage控件的AutoSize属性为True,Left属性为0,Top属性为0。

(4)、在TForm1的类定义中加两个私有变量:intiX0,iY0;

(5)、响应TImage控件的OnMouseDown和OnMouseMove事件。

void__fastcallTForm1::Image1MouseDown(TObject*Sender,

TMouseButtonButton,TShiftStateShift,intX,intY)

{

iX0=X;

iY0=Y;

}

void__fastcallTForm1::Image1MouseMove

(TObject*Sender,TShiftStateShift,intX,intY)

{

intiDeltaX,iDeltaY;

if(Shift.Contains(ssLeft))

{

iDeltaX=X-iX0;

iDeltaY=Y-iY0;

if(iDeltaY)

Image1->Left+=iDeltaX;

if(iDeltaY)

Image1->Top+=iDeltaY;

}

}

(6)、运行时按住鼠标左键拖动,图象将跟随移动。

(7)、如果通过键盘控制,只需参考鼠标控制的代码,加入键盘控制即可。

(8)、实际应用时,根据需要加入边界限制,保证图象不会被移出显示区域之外。

(1)、在窗体中放置一个TPanel控件,调整好其尺寸。

(2)、在TPanel控件是放置一个TImage控件。

(3)、设置TImage控件的AutoSize属性为True,Left属性为0,Top属性为0。

(4)、在TForm1的类定义中加两个私有变量:intiX0,iY0;

(5)、响应TImage控件的OnMouseDown和OnMouseMove事件。

void__fastcallTForm1::Image1MouseDown(TObject*Sender,

TMouseButtonButton,TShiftStateShift,intX,intY)

{

iX0=X;

iY0=Y;

}

void__fastcallTForm1::Image1MouseMove

(TObject*Sender,TShiftStateShift,intX,intY)

{

intiDeltaX,iDeltaY;

if(Shift.Contains(ssLeft))

{

iDeltaX=X-iX0;

iDeltaY=Y-iY0;

if(iDeltaY)

Image1->Left+=iDeltaX;

if(iDeltaY)

Image1->Top+=iDeltaY;

}

}

(6)、运行时按住鼠标左键拖动,图象将跟随移动。

(7)、如果通过键盘控制,只需参考鼠标控制的代码,加入键盘控制即可。

(8)、实际应用时,根据需要加入边界限制,保证图象不会被移出显示区域之外。

(1)、在窗体中放置一个TPanel控件,调整好其尺寸。

(2)、在TPanel控件是放置一个TImage控件。

(3)、设置TImage控件的AutoSize属性为True,Left属性为0,Top属性为0。

(4)、在TForm1的类定义中加两个私有变量:intiX0,iY0;

(5)、响应TImage控件的OnMouseDown和OnMouseMove事件。

void__fastcallTForm1::Image1MouseDown(TObject*Sender,

TMouseButtonButton,TShiftStateShift,intX,intY)

{

iX0=X;

iY0=Y;

}

void__fastcallTForm1::Image1MouseMove

(TObject*Sender,TShiftStateShift,intX,intY)

{

intiDeltaX,iDeltaY;

if(Shift.Contains(ssLeft))

{

iDeltaX=X-iX0;

iDeltaY=Y-iY0;

if(iDeltaY)

Image1->Left+=iDeltaX;

if(iDeltaY)

Image1->Top+=iDeltaY;

}

}

(6)、运行时按住鼠标左键拖动,图象将跟随移动。

(7)、如果通过键盘控制,只需参考鼠标控制的代码,加入键盘控制即可。

(8)、实际应用时,根据需要加入边界限制,保证图象不会被移出显示区域之外。

(1)、在窗体中放置一个TPanel控件,调整好其尺寸。

(2)、在TPanel控件是放置一个TImage控件。

(3)、设置TImage控件的AutoSize属性为True,Left属性为0,Top属性为0。

(4)、在TForm1的类定义中加两个私有变量:intiX0,iY0;

(5)、响应TImage控件的OnMouseDown和OnMouseMove事件。

void__fastcallTForm1::Image1MouseDown(TObject*Sender,

TMouseButtonButton,TShiftStateShift,intX,intY)

{

iX0=X;

iY0=Y;

}

void__fastcallTForm1::Image1MouseMove

(TObject*Sender,TShiftStateShift,intX,intY)

{

intiDeltaX,iDeltaY;

if(Shift.Contains(ssLeft))

{

iDeltaX=X-iX0;

iDeltaY=Y-iY0;

if(iDeltaY)

Image1->Left+=iDeltaX;

if(iDeltaY)

Image1->Top+=iDeltaY;

}

}

(6)、运行时按住鼠标左键拖动,图象将跟随移动。

(7)、如果通过键盘控制,只需参考鼠标控制的代码,加入键盘控制即可。

(8)、实际应用时,根据需要加入边界限制,保证图象不会被移出显示区域之外。

时间: 2024-10-19 14:50:32

C++Builder中大尺寸图象的显示技巧的相关文章

提高Interface Builder高效工作的8个技巧

本文转载至 http://www.cocoachina.com/ios/20141106/10151.html iOS开发Interface Builder 本文译自:8 Tips for working effectively with Interface Builder(需FQ) 先来看看目录: 介绍 使view的Size与view中的Content相适应 按住option键—观察所选中view与另外view边缘之间的距离 Editor –> Embed In View, Unembed:

HTML特殊符号显示技巧

转:http://www.cnblogs.com/JessonChan/archive/2011/08/06/2129170.html HTML符号 显示一览表.编辑博客的时候经常会用到.特别是空格( ) 比如段落开头实现缩进插入两个全角空格就在每一段的段首插入:      一般可能用的到的符号代码: 符号 HTML 符号 HTML   & & < < > > ⁄ ⁄ " " ¸ ¸ ° ° ½ ½ ¼ ¼ ¾ ¾ « « » » ¯ ¯ ‰ ‰

JavaFX Scene Builder 使用基础(一)

怎么用Scene Builder 来配合编写一个程序?下面我们就以此来讨论一下. (一)基础准备工作 本人使用NetBeans与JavaFX Scene Builder协同编写. 对于NetBeans我们需要做的是如下步骤:文件-->新建项目-->JavaFX-->JavaFX FXML应用程序,然后单击下一步,如图: 建立好工程文件后,我们可以看到工程下有三个文件,一个.FXML文件,两个.java文件,如图: 其中FXMLDocument.fxml为用户界面,我们可以通过JavaFX

Android开发之使用Notification.Builder

通知的主要功能是提示功能.例如:短信.推送信息等等. 大体使用步骤: 1.获取状态通知栏管理 NotificationManager 是一个系统Service,所以必须通过 getSystemService(NOTIFICATION_SERVICE)方法来获取. notificationManager = (NotificationManager) this .getSystemService(NOTIFICATION_SERVICE); 2.实例化通知栏构造器NotificationCompa

(Android学习系列)一,用按钮实现时间的显示

我们先用AndroidStudio新建一个项目,选择空白模板,然后像其中拖入两个Button,将他们的id分别命名为btDate(显示日期),btTime(显示时间),他的模板XML代码很简单 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3

iOS开发-Xcode使用技巧汇总(持续更新)

1. <LLDB调试命令初探> 2. <Xcode LLDB Debug教程> 3. <iOS开发准备篇-(5)Xcode调试技巧_1> 4. <iOS开发准备篇-(5)Xcode调试技巧_2> 5. <iOS开发准备篇-(5)Xcode调试技巧_3> 6. < iOS开发准备篇-(4)Xcode基本操作> 7. <提高Interface Builder高效工作的8个技巧>

Fresco源码赏析 之 图片显示流程

转载请注明出处:http://blog.csdn.net/u014614038/article/details/51498068 上文大概将Fresco的基本流程通了一遍,就是Frosco是如何实现了只是简单调用了setImageUrl的方法后自动将所有事情做好,这里包含很多的流程,上文大概把这些流程过了一遍,这篇文章打算将接说一下上文没有说到的一些东西,就是拿到数据后它是如何处理的,是怎么显示出来的. 上文 Fresco源码赏析 之基本流程可以看这里: http://blog.csdn.net

AlertDialog.Builder提示对话框

1 package zyf.EX_Ctrl_3_B; 2 import android.app.Activity; 3 import android.app.AlertDialog; 4 import android.os.Bundle; 5 public class EX_Ctrl_3_B extends Activity { 6 /** Called when the activity is first created. */ 7 @Override 8 public void onCrea

Android通知Notification全面剖析

通知 通知是您可以在应用的常规 UI 外部向用户显示的消息.当您告知系统发出通知时,它将先以图标的形式显示在通知区域中.用户可以打开抽屉式通知栏查看通知的详细信息. 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看. 图 1. 通知区域中的通知. 图 2. 抽屉式通知栏中的通知. 注:除非特别注明,否则本指南均引用版本 4 支持库中的 NotificationCompat.Builder 类.Android 3.0(API 级别 11)中已添加类 Notification.Build