准备工作 在窗体上放置一个 TPanel 在 TPanel 上放一个 TImage 另外需要三个按钮 本例效果图 第一版代码 unitUnit; interface uses WindowsMessagesSysUtilsVariantsClassesGraphicsControlsForms DialogsStdCtrlsExtCtrls; type TForm=class(TForm) Button:TButton; Button:TButton; Button:TButton; Panel:TPanel; Image:TImage; procedureButtonClick(Sender:TObject); procedureButtonClick(Sender:TObject); procedureButtonClick(Sender:TObject); end; var Form:TForm; implementation {$R*dfm} usesClipbrd; procedureTFormButtonClick(Sender:TObject); begin ImageLeft:=; ImageTop:=; PanelAutoSize:=True; ImageAutoSize:=True; ImagePictureLoadFromFile(c:temptestbmp); TButton(Sender)Caption:=导入; end; procedureTFormButtonClick(Sender:TObject); begin ClipboardAssign(ImagePicture);{把Image中的图片放入剪切板} {现在在图像软件中都可以粘贴了可以用Windows画图板试试} TButton(Sender)Caption:=复制; end; procedureTFormButtonClick(Sender:TObject); var bit:TBitmap;{准备用一个TBitmap从剪切板中结束图片} xy:Integer; begin bit:=TBitmapCreate; bitAssign(Clipboard);{从剪切板获取} x:=PanelWidth+PanelLeft*;{xy是准备在窗体上的粘贴位置} y:=PanelTop; CanvasDraw(xybit);{粘贴就是画出来呗} bitFree; TButton(Sender)Caption:=粘贴; end; 不过现在程序还有漏洞 假如剪切板中没有东西 粘贴什么? 如果剪切板中不是图片 怎么粘贴? 其实我们只用 TClipboardHasFormat 函数判断一下剪切板中是不是图片就行了 第二版代码 unitUnit; interface uses WindowsMessagesSysUtilsVariantsClassesGraphicsControlsForms DialogsStdCtrlsExtCtrls; type TForm=class(TForm) Button:TButton; Button:TButton; Button:TButton; Panel:TPanel; Image:TImage; procedureButtonClick(Sender:TObject); procedureButtonClick(Sender:TObject); procedureButtonClick(Sender:TObject); end; var Form:TForm; implementation {$R*dfm} usesClipbrd; procedureTFormButtonClick(Sender:TObject); begin ImageLeft:=; ImageTop:=; PanelAutoSize:=True; ImageAutoSize:=True; ImagePictureLoadFromFile(c:temptestbmp); TButton(Sender)Caption:=导入; end; procedureTFormButtonClick(Sender:TObject); begin {如果Image还没有图片就别复制了退出吧} ifImagePicture=nilthenExit; ClipboardAssign(ImagePicture); TButton(Sender)Caption:=复制; end; procedureTFormButtonClick(Sender:TObject); var bit:TBitmap; xy:Integer; begin {如果当前剪切板中的东西不是图片就退出} ifnotClipboardHasFormat(CF_BITMAP)thenExit; bit:=TBitmapCreate; bitAssign(Clipboard); x:=PanelWidth+PanelLeft*; y:=PanelTop; CanvasDraw(xybit); bitFree; TButton(Sender)Caption:=粘贴; end; end 现在有出了新的问题 CF_BITMAP 常量表示图片 其他格式怎么表示? 有多少格式可以用于剪切板? |