?101,Q:用    Visual    Basic    保存    BMP    文件:    

            A:    在用VB编制绘图程序时,有时需要将窗体或图片框上的绘图结果形成一个定制的图形文件保存起来,以便以后浏览或修改。这一功能可以用    VB    本身带有的    SavePicture    语句来完成。

        SavePicture语句将窗体、图象控件或图片框中的图形图象保存到磁盘上的一个文件中,这些图象可以是使用画图方法(Line,Circle,Pset)产生出来的,也可以存储那些通过设置窗体或图片框的图片属性或者通过PaintPicture    方法或    Load    Picture    函数载入的图象。这些载入的图象可以是    BMP、ICO    或    WMF    图形文件。

        SavePicture    语句的语法格式如下:

            SavePicture    picture,stringexpression

        参数    picture    为窗体或图片框的    picture    或    image    属性;参数    strngexpression    为保存的文件名。

        下面举一个具体的程序来说明定制图象文件的过程:

    1、创建一个新的项目文件,在    Forml    中加入一个图象控件    Picture1,将Picture1    的    AutoRedraw    属性设置为    True;

    2、在Form_Load()    事件中,加入如下代码:

        Private    Sub    Form-Load()

        Dim    CX    As    Integer

        Dim    CY    As    Integer

        Dim    Limit    As    Integer

        Dim    Radius    As    Integer

        CX=1000

        CY=1000

        For    Radius=0    To    Limit

        Picturel.Circle(CX,CY),Radius,RGB(Rnd*255,Rnd*255,Rnd*255)

        Next    Radius

        SavePicture    Picturel.Image,"c:\custom.bmp"

        End    Sub

        执行此程序就会把图片框    Picture1    上的图象保存在    C:    盘根目录下    custom.bmp    图象文件中。

        最后有两点需要指出:

        1、在使用    SavePicture    语句之前,必须先将窗体或图片框的    AutoRedraw    属性设为    True,否则保留的将是一张空图;

        2、使用    Image    属性保存的用画图命令(如    Line,Cirele,Pset    或    Print)画出来的图形总是以    BMP    文件格式保存。但在程序设计时如果使用窗体或图片框的    Picture    属性载入或在程序运行时通过    LoadPicture    函数载入的图象,使用    SavePicture    语句存储时,存储的文件格式同其载入前的文件格式一样(如    ICO    格式等)。        

        102,Q:在    Visual    Basic    中如何拖动窗体或控件?    

            A:现在的许多    windows    下的应用程序,都采用了图形化的界面,但是在这样的界面下就不能使用    Windows    原来的标题条了,否则会影响界面的美观。那么在没有标题条的情况下如何用鼠标拖动窗体或者其它的控件呢?

        其实,采用    API    函数调用很容易实现,下面我们以拖动窗体    Form1    为例来具体讲一下实现方法:

    1、新建立一个项目,名称为    test.vbp;

    2、填加一个模块,名称为    test.bas,并且在声明部分加入以下代码:

        Declare    Function    ReleaseCapture    Lib    "user32"    ()    As    Long

        Declare    Function    SendMessage    Lib    "user32"    Alias    "SendMessageA"    (ByVal    hwnd    As    Long,    ByVal    wMsg    As    Long,    ByVal    wParam    As    Long,    lParam    As    Any)    As    Long

        Public    Const    WM_SYSCOMMAND    =    &H112

        Public    Const    SC_MOVE    =    &HF012

  其中    ReleaseCapture    函数是用来释放鼠标捕获的,SendMessage    函数是一个在    Windows    API    中非常重要的函数,在这里的作用是用来向    Windows    发送移动窗体的消息。WM_SYSCOMMAND    是向    Windows    发送消息的常量。SC_MOVE    是控制移动窗体的常量。请注意:这里    SC_MOVE    的赋值是    &HF012,表示鼠标对象。

    3、在窗体的    MouseDown    过程中加入以下代码:

        Private    Sub    Form_MouseDown(Button    As    Integer,    Shift    As    Integer,    X    As    Single,    Y    As    Single)

        ReleaseCapture

        SendMessage    Me.hwnd,    WM_SYSCOMMAND,    SC_MOVE,    0

        End    Sub

        其中    ReleaseCapture    函数用来释放鼠标捕获,SendMessage    函数向    Windows    发送移动窗体的消息。

    4、保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动。

        以上讲述了如何在    VB    中用鼠标拖动窗体,其实,控件的拖动的原理是一样的。例如以下代码可以实现图片框的拖动:

        ReleaseCapture

        SendMessage    Picture1.hwnd,    WM_SYSCOMMAND,    SC_MOVE,    0

        (注:以上程序在    Windows98、VB5.0/6.0    下调试通过。在    NT4.0、VB6.0    下不能运行。)        

    103,Q:用    Delphi5.0    编程实现    Windows    桌面的隐藏和显示

            A:实现原理是调用    Windows    的    API    函数。程序代码如下:

            procedure    TForm1.Button1Click(Sender:    TObject);

            var    hDesktop:Thandle;

            begin

            hDesktop:=FindWindow('Progman',nil);

            ShowWindow(hDesktop,SW_HIDE);    //隐藏桌面

            end;

            procedure    TForm1.Button2Click(Sender:    TObject);

            var    hDesktop:Thandle;

            begin

            hDesktop:=FindWindow('Progman',nil);

            ShowWindow(hDesktop,SW_SHOW);    //显示桌面

            end;

            procedure    TForm1.Button3Click(Sender:    TObject);

            begin

            close;

            end    

    104,Q:应用    Microsoft    TTS    语音引擎的    Delphi    语言实例

            A:建立一个单窗体工程,添加一个    Edit    和    2    个    Button    控件,分别命名为    Edit1、btnSpeak、btnStop。然后安装引用    TTS    的    vtxtauto.tlb    类库文件,方法是点击菜单“工程-Import    Type    Library”,点“add”按钮,然后选中    Windows\speech    下的    Vtxtauto.tlb    文件,放入安装包后,再将其添加成    Delphi    的一个    Unit,自动产生的名字为“VTxtAuto_TLB”。然后,在主    Unit    的    Uses    里引用    VTxtAuto_TLB,即在    Uses    后添加字串“VTxtAuto_TLB”。最后参考以下代码:

        ……

        procedure    TfrmSpeech.FormCreate(Sender:    TObject);

        begin

            vtxt:=CoVTxtAuto_.Create;

            vtxt.Register('','Speech');

            Edit1.Text:='I    am    a    chinese,    I    love    my    homeland    very    much,    and    you?'

        end;

        procedure    TfrmSpeech.btnSpeakClick(Sender:    TObject);

        begin

            vtxt.Speed:=100;

            vtxt.Speak(trim(Edit1.Text),10);

        end;

        procedure    TfrmSpeech.btnStopClick(Sender:    TObject);

        begin

            vtxt.StopSpeaking;

        end;

        end.   

推荐作品:张三丰异界游  黑道学生  限制级特工  回到明朝当王爷  神墓  极品家丁  艳遇传说  
推荐作家:我吃西红柿  云天空  跳舞  辰东  天堂羽  唐家三少  鹅考  众生  静官  流浪的蛤蟆