一个困扰了偶多日的有关问题:关于 Image 上做图,移动鼠标怎么彻底不闪烁的有关问题
一个困扰了偶多日的问题:关于 Image 上做图,移动鼠标如何彻底不闪烁的问题。
源码如下:
//---------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h "
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm "
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Image1-> Canvas-> Ellipse(60,60,20,20);
Image1-> Canvas-> MoveTo(40,5);
Image1-> Canvas-> LineTo(20,70);
Image1-> Canvas-> LineTo(40,45);
Image1-> Canvas-> LineTo(60,70);
Image1-> Canvas-> LineTo(40,5);
//可能由于在 Form 上用了一张 gif 图片,在此处用了下句也不顶用,迷惑中~~~
Form1-> DoubleBuffered=true;
}
//---------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
{
Image1-> Canvas-> TextOut(Image1-> Width-240,30, "鼠标位置: "+IntToStr(Mouse-> CursorPos.y)+ " , "+IntToStr(Mouse-> CursorPos.x));
}
//---------------------------------------
当在 Image 上移动鼠标时,屏幕还是轻微的闪烁,试验多次未果,极其迷茫,在此请教高手指点,谢谢。如何做到屏幕彻底不闪烁?
------解决方案--------------------
建议用PaintBox组件,写在OnPaint事件里面。
------解决方案--------------------
直接到Form上画
------解决方案--------------------
建议用PaintBox组件,写在OnPaint事件里面。
内存画
------解决方案--------------------
Image1-> Parent-> DoubleBuffered = true;
------解决方案--------------------
不过我自己喜欢用 TPaintBox
------解决方案--------------------
在内存中new个Image,在此Image上画,外部的控件Image1只是最为显示用,看看可否?
源码如下:
//---------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h "
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm "
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Image1-> Canvas-> Ellipse(60,60,20,20);
Image1-> Canvas-> MoveTo(40,5);
Image1-> Canvas-> LineTo(20,70);
Image1-> Canvas-> LineTo(40,45);
Image1-> Canvas-> LineTo(60,70);
Image1-> Canvas-> LineTo(40,5);
//可能由于在 Form 上用了一张 gif 图片,在此处用了下句也不顶用,迷惑中~~~
Form1-> DoubleBuffered=true;
}
//---------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,int X, int Y)
{
Image1-> Canvas-> TextOut(Image1-> Width-240,30, "鼠标位置: "+IntToStr(Mouse-> CursorPos.y)+ " , "+IntToStr(Mouse-> CursorPos.x));
}
//---------------------------------------
当在 Image 上移动鼠标时,屏幕还是轻微的闪烁,试验多次未果,极其迷茫,在此请教高手指点,谢谢。如何做到屏幕彻底不闪烁?
------解决方案--------------------
建议用PaintBox组件,写在OnPaint事件里面。
------解决方案--------------------
直接到Form上画
------解决方案--------------------
建议用PaintBox组件,写在OnPaint事件里面。
内存画
------解决方案--------------------
Image1-> Parent-> DoubleBuffered = true;
------解决方案--------------------
不过我自己喜欢用 TPaintBox
------解决方案--------------------
在内存中new个Image,在此Image上画,外部的控件Image1只是最为显示用,看看可否?