国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VB中對(duì)象隨窗體而改變大小的方法總結(jié)
VB中對(duì)象隨窗體而改變大小的方法總結(jié)
L0ftFC
      前些時(shí)在做VB的編程研究時(shí),發(fā)現(xiàn)一個(gè)問(wèn)題:針對(duì)某一窗體(FORM),若它在運(yùn)行過(guò)程中人為改變其大小(即Resize),如何讓該窗體內(nèi)的對(duì)象也隨之改變呢?于是對(duì)此鄙人做了一下的一個(gè)方法小總結(jié),僅供參考,如有遺漏,請(qǐng)見諒,如有高見,請(qǐng)不吝惜賜教。
      問(wèn)題的核心是要等比縮放對(duì)象,所以關(guān)鍵應(yīng)該在如何改變對(duì)象的大小上。而針對(duì)不同的對(duì)象,也有當(dāng)然有其不同的方法,在此我暫將對(duì)象分為兩類:1.固有對(duì)象;2.構(gòu)造對(duì)象。
      1.固有對(duì)象:
      即VB本身提供的對(duì)象接口,它們是實(shí)體對(duì)象,且君有其固定的屬性值,并且屬性值只可修改而不能創(chuàng)造的這一類對(duì)象。例如:CommandButton , Textbox , Label,PictureBox 等。
      針對(duì)固有對(duì)象的特性,很自然想到用類來(lái)進(jìn)行對(duì)象放縮,一下是我的一個(gè)操作方案:
      A.定義類(即比例尺):
                  '定義一個(gè)類用于保存每個(gè)控件的放大比例
Type MyControl
                        mcTop       As Single
                        mcLeft       As Single
                        mcHeight    As Single
                        mcWidth     As Single
End Type
      定義這樣一個(gè)類的目的,就是在窗體加載時(shí)記錄下窗體內(nèi)的對(duì)象和窗體初始時(shí)的比例尺。
B.初始化類(獲取比例尺):
'用于在form_load時(shí)初始化控件與窗體的初始比例,用于以后原始比例放大
Private Function InitMycont(Obj As Control, mcControl As MyControl)
             mcControl.mcLeft = Obj.Left / Form1.ScaleWidth
             mcControl.mcTop = Obj.Top / Form1.ScaleHeight
             mcControl.mcWidth = Obj.Width / Form1.ScaleWidth
             mcControl.mcHeight = Obj.Height / Form1.ScaleHeight
End Function
這樣針對(duì)該類,我現(xiàn)在便有了一個(gè)初始化操作了。
      C.按類的記錄改變對(duì)象的屬性(按比例尺縮放):
'用于在form_resize時(shí)對(duì)控件進(jìn)行比例放大
Private Function ChangeMycont(Obj As Control, mcControl As MyControl)
            Obj.Left = mcControl.mcLeft * Form1.ScaleWidth
            Obj.Top = mcControl.mcTop * Form1.ScaleHeight
            Obj.Width = mcControl.mcWidth * Form1.ScaleWidth
            Obj.Height = mcControl.mcHeight * Form1.ScaleHeight
End Function
      經(jīng)過(guò)以上三步后,我便有了一個(gè)完整的面向縮放對(duì)象的編程方式(包含類及其基本操作)了,但我們?cè)撊绾问褂眠@個(gè)類呢?沒錯(cuò),初始化一定是在窗體加載(Form_Load)時(shí)使用,而改變大小操作就放在窗體改變(Form_Resize)時(shí)操作啦!代碼如下:
'調(diào)用InitMycont()函數(shù)初始化放大比例
Private Sub Form_Load()
                   a = InitMycont(Command1, mcControl(1))
                   b = InitMycont(Text1, mcControl(2))
End Sub
      
              '調(diào)用changMycont()函數(shù)進(jìn)行按比例的放大
Private Sub Form_Resize()
                   a = ChangeMycont(Command1, mcControl(1))
                   b = ChangeMycont(Text1, mcControl(2))
End Sub
       以上便實(shí)現(xiàn)了固有對(duì)象的大小變化。
      2.構(gòu)造對(duì)象
      即針對(duì)于VB中的圖形編程而言的,特別是那些直接在窗體上所做的圖形(因?yàn)樘热粼赑ictureBox中做圖,仍然屬于固有對(duì)象的范疇)。對(duì)于固有對(duì)象,當(dāng)窗體縮小以至于比固有對(duì)象還小時(shí),固有對(duì)象僅僅是被遮蓋了,當(dāng)窗體放大后,對(duì)象仍然完整。但是對(duì)于圖形等構(gòu)造對(duì)象而言,即使窗體再放大,原來(lái)的圖形一旦被遮蓋,就無(wú)法像固有對(duì)象一樣依舊完整了。
      當(dāng)然,凡事有弊必有利。既然圖形本身是可重構(gòu)的,為何不在窗體改變時(shí)重新構(gòu)造原有的圖形呢?
      VB在做圖形編程時(shí),有兩種方法:1.絕對(duì)坐標(biāo);2.自定義坐標(biāo)。然而VB中的自定義坐標(biāo)本身就是一個(gè)相對(duì)值集合,即無(wú)論窗體怎么變化,坐標(biāo)的值是相對(duì)值,值是不變,那么我們?cè)谶@樣一個(gè)坐標(biāo)下所做的圖形本身就具有隨窗體大小改變的能力。于是,我自創(chuàng)了如下方法:
      A.根據(jù)需求建立自定義坐標(biāo):
           e.g:        Scale (-1, 1)-(1, -1)             ‘建立了一個(gè)自定義坐標(biāo)
   注:VB默認(rèn)的x軸正方向是向右沒問(wèn)題,但是y軸正方向是向下的,所以想定義一個(gè)標(biāo)準(zhǔn)笛卡爾坐標(biāo)系(即直角坐標(biāo)系,y軸正方向向上),起始點(diǎn)與終止點(diǎn)的y坐標(biāo)正好反過(guò)來(lái)了。
      B.利用圖形工具(PSet,Circle,Line)作“持久圖形”
           e.g:       AutoRedraw = True
                             Circle (x, y)               ‘畫一個(gè)可持久的圓
      注:這里“可持久”并非真的持久不變,只是將圖形的AutoRedraw打開了。這樣該圖形在每一次被加載時(shí)都會(huì)重畫一次,再加上自定義坐標(biāo)的相對(duì)性,于是每改變一次,圖形都會(huì)根據(jù)當(dāng)前坐標(biāo)再做一次圖,圖形就能夠縮放了。不過(guò)這里的AutoRedraw 屬性只針對(duì)一個(gè)圖形,假若有兩個(gè)圖形同時(shí)產(chǎn)生,想要它們均可重畫,必須對(duì)每個(gè)圖形定義前加上“AutoRedraw = True”
                 e.g:               AutoRedraw = True
    Circle (50, 50), 30                '一個(gè)實(shí)心圓(持久圖形)
                                              AutoRedraw = False
                                              Circle (70, 70), 10                '一個(gè)實(shí)心圓(臨時(shí)圖形)
 

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/wcn1990/archive/2009/05/15/4189817.aspx
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
c# GDI 簡(jiǎn)單繪圖(一)
一勞永逸讓VB自動(dòng)改變控件大小
VB —多文檔程序
VB技巧 | VB程序運(yùn)行時(shí),如何更改VB工程默認(rèn)的啟動(dòng)對(duì)象Form1?
VB使用API的簡(jiǎn)明教程
VB中實(shí)現(xiàn)“所見即所得”功能
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服