vb如何把任意图片缩放到固定大小的PictureBox并保持图片原来的宽高比 vb中如何根据PictureBox的大小自动调整相片

vb\u4e2d\u600e\u4e48\u8bbe\u7f6e\u8ba9\u8ba9\u56fe\u7247\u968f\u56fe\u7247\u6846\u7684\u5927\u5c0f\u53d8\u5316\u800c\u53d8\u5316\u5728\u4e0d\u5199\u4ee3\u7801\u7684\u60c5\u51b5\u4e0b

\u56fe\u7247\u6846 PictureBox \u6ca1\u6709\u8fd9\u4e2a\u529f\u80fd\uff0c\u53ea\u80fd\u662f\u56fe\u7247\u6846\u968f\u56fe\u7247\u5927\u5c0f\u81ea\u52a8\u8c03\u6574\uff08\u5728\u56fe\u7247\u8f7d\u5165\u65f6\u8c03\u6574\uff09\u3002
\u56fe\u50cf\u6846 Image \u63a7\u4ef6\u5230\u662f\u53ef\u4ee5\uff0c\u8bbe\u7f6eStretch = True

\u6dfb\u52a0\u4e24\u4e2aPicture\u63a7\u4ef6\uff0c\u5148\u8f7d\u5165Picture2\uff0c\u7136\u540e\u6839\u636ePicture1\u7684\u5927\u5c0f\u81ea\u52a8\u8c03\u6574\u663e\u793a\u3002
\u4ee3\u7801\u5982\u4e0b\uff1a
Private Sub Form_Load() Picture1.AutoRedraw = True '\u91cd\u7ed8\u56fe\u7247 Picture1.AutoSize = False '\u56fe\u7247\u6846\u5927\u5c0f\u4e0d\u53d8 Picture1.Visible = True 'Picture1.BackColor = RGB(255, 255, 255) '\u8bbe\u7f6e\u56fe\u7247\u6846\u80cc\u666f\u989c\u8272 Picture2.AutoSize = True 'Picture2\u81ea\u52a8\u7f29\u653e\u4ee5\u9002\u5e94\u56fe\u7247\uff0c\u4e0d\u53ef\u89c1 Picture2.Visible = FalseEnd SubPrivate Sub Command1_Click() Picture2.Picture = LoadPicture("C:\2.jpg") '\u56fe\u7247\u52a0\u8f7d\u5230Pic2 If Picture2.ScaleWidth > Picture2.ScaleHeight Then imageWidth = Picture1.ScaleWidth imageHeight = Picture1.ScaleHeight * Picture2.ScaleHeight / Picture2.ScaleWidth Else imageWidth = Picture1.ScaleWidth * Picture2.ScaleWidth / Picture2.ScaleHeight imageHeight = Picture1.ScaleHeight End If Picture1.Cls Picture1.PaintPicture Picture2, (Picture1.ScaleWidth - imageWidth) / 2, (Picture1.ScaleHeight - imageHeight) / 2, imageWidth, imageHeight, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeightEnd Sub\u6548\u679c(\u7531\u4e8e\u56fe\u7247\u5c0f\uff0c\u4e8e\u662f\u8c03\u6574\u540e\u4e0a\u4e0b\u7a7a\u51fa\u6765\u4e86)\uff1a

        PictureBox(图片框)是Visual Basic中用来显示图形的基本控件之一,用于在窗体指定位置显示图形信息,它支持多种格式的图形文件,包括位图文件(*.bmp,*.dib)、图标文件(*.ico)、光标文件(*.cur)、图元文件(*.wmf,*.emf),还有Internet 上流行的压缩位图格式的JPEG文件和GIF文件。最重要的功能是可以在它上面绘图。但是PictureBox只有自动适应图片大小的属性,而没有图片适应控件的属性。

        原题要“把任意图片缩放到固定大小的PictureBox并保持图片原来的宽高比”,也就是加载以后图片不能变形。这样比较繁琐一些,但是效果很好,仅供你参考。

        准备:在窗体上放置两个PictureBox控件,Picture1的长宽要相同(要是按照你的“

PictureBox分辨率为,500*200”,图像就变形了!),一个CommonDialog控件,一个Command控件。

 

代码如下:

 

Option Explicit

Private Sub Command1_Click()
    Dim imageWidth As Long
    Dim imageHeight As Long
   
    CommonDialog1.Filter = "(图片文件)*.BMP;*.JPG;*.JPEG|*.BMP;*.JPG;*.JPEG" '用来选择图片
    CommonDialog1.FilterIndex = 0
    CommonDialog1.Action = 1
    If CommonDialog1.FileName <> "" Then
        Picture2.Picture = LoadPicture(CommonDialog1.FileName)          '图片加载到Pic2
       
        If Picture2.ScaleWidth > Picture2.ScaleHeight Then
            imageWidth = Picture1.ScaleWidth
            imageHeight = Picture1.ScaleHeight * Picture2.ScaleHeight / Picture2.ScaleWidth
        Else
            imageWidth = Picture1.ScaleWidth * Picture2.ScaleWidth / Picture2.ScaleHeight
            imageHeight = Picture1.ScaleHeight
        End If
        Picture1.Cls
        Picture1.PaintPicture Picture2, (Picture1.ScaleWidth - imageWidth) / 2, (Picture1.ScaleHeight - imageHeight) / 2, imageWidth, imageHeight, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight
    End If
   
End Sub

Private Sub Form_Load()
    Picture1.AutoRedraw = True '重绘图片
    Picture1.AutoSize = False   '图片框大小不变
    Picture1.Visible = True
    Picture1.BackColor = RGB(0, 255, 0) '设置图片框背景颜色
   
    Picture2.AutoSize = True 'Picture2自动缩放以适应图片,不可见
    Picture2.Visible = False
   
    Command1.Caption = "选择图片"
End Sub

 

该代码在VB6测试通过,结果如下:



  • vb濡備綍鎶婁换鎰忓浘鐗囩缉鏀惧埌鍥哄畾澶у皬鐨凱ictureBox骞朵繚鎸佸浘鐗囧師鏉ョ殑瀹介珮姣...
    绛旓細鍘熼瑕佲鎶婁换鎰忓浘鐗囩缉鏀惧埌鍥哄畾澶у皬鐨凱ictureBox骞朵繚鎸佸浘鐗囧師鏉ョ殑瀹介珮姣斺濓紝涔熷氨鏄姞杞戒互鍚庡浘鐗囦笉鑳藉彉褰傝繖鏍锋瘮杈冪箒鐞愪竴浜涳紝浣嗘槸鏁堟灉寰堝ソ锛屼粎渚涗綘鍙傝冦傚噯澶囷細鍦ㄧ獥浣撲笂鏀剧疆涓や釜PictureBox鎺т欢锛孭icture1鐨勯暱瀹借鐩稿悓锛堣鏄寜鐓т綘鐨勨淧ictureBox鍒嗚鲸鐜囦负锛500*200鈥濓紝鍥惧儚灏卞彉褰簡锛侊級锛屼竴涓狢ommonDialog鎺т欢...
  • vb濡備綍鎶涓涓枃浠跺す涓殑鎵鐢鍥剧墖缂╁皬鍒鎸囧畾灏哄,骞朵繚瀛?
    绛旓細鍏堟墦寮鎸囧畾鍥剧墖锛屽垱寤篋C锛屽皢姝ゅ浘鐗噃dc璧嬩簣DC锛鐒跺悗鐢⊿tretchBlt 鍑芥暟缂╁皬鍒版寚瀹氬昂瀵锛岀劧鍚庝粠DC涓彇鍑哄浘鐗囷紝骞朵繚瀛
  • vb濡備綍璁╁浘鐗囪嚜鍔缂╂斁鎴愬浘鐗妗嗗ぇ灏,鍥剧墖妗嗚瀹鎴愬浐瀹澶у皬,鑰屽浘鐗囪瀹屾暣...
    绛旓細璇曡瘯杩欎釜,瑕佷袱涓狿ictureBOX,涓涓狢OMMANDBUTTON,涓涓狢ommonDialog,Picture1鐨勯暱瀹借鐩稿悓 Private Sub Command1_Click()Dim pic_widht As Long Dim pic_height As Long CommonDialog1.Filter = "(鍥剧墖鏂囦欢)*.BMP;*.JPG;*.JPEG|*.BMP;*.JPG;*.JPEG"'鐢ㄦ潵閫夋嫨鍥剧墖 CommonDialog1.FilterIndex = 0...
  • 鍦╒B涓浣曞皢瀹炵幇鍥剧墖灞閮ㄦ斁澶
    绛旓細Shift As Integer, X As Single, Y As Single)On Error Resume NextPicture2.ClsPicture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width, Picture2.Height, X - 200,
  • VB涓浣瀹炵幇鍥剧墖鑷姩缂╂斁
    绛旓細1.鍙互鍒╃敤picture.mousemove()浜嬩欢瀹炵幇鏀惧ぇ鏁堟灉.鍗冲綋榧犳爣缁忚繃鏃,鍥惧儚鐨勯暱瀹藉垎鍒姞涓婁竴涓浐瀹氬.瀹炵幇"鏀惧ぇ"鏁堟灉.涓嶈繃瑕佹敞鎰忓氨鏄,瑕佸厛璁剧疆涓涓垽鏂爣蹇---鏀惧ぇ浜嗕竴娆″悗灏变笉瑕佸啀鏀惧ぇ浜.涓嶇劧,褰撻紶鏍囦竴鐩村湪涓婇潰鏃,涓嶆柇瑙﹀彂杩欎釜浜嬩欢,浼氫笉鏂彉澶,涓庤鎯虫晥鏋滀笉鍚.浣,picutre鎺т欢鏈韩娌℃湁榧犳爣绂诲紑浜嬩欢,鏃犳硶...
  • vb 濡備綍鏀惧ぇ鎴栫缉灏忓浘鐗,鐢≒icture鎺т欢
    绛旓細閴翠簬浣犳柊鎵嬬畝鑰岃█涔 浠g爜鎺у埗鍥剧墖妗嗕腑鍥剧墖鐨勫昂瀵 鍙屽嚮鍥剧墖妗 浠g爜濡備笅锛歱icture1.picture=loadpicture("鍥剧墖璺緞")picture1.autosize=Ture
  • 濡備綍鐢vb瀹炵幇鍥剧墖鐨勬斁澶т笌缂╁皬?
    绛旓細image1.width=image1.width+?image1.width=image1.width-?濂借薄鏄繖鏍峰惂锛岋紝璇曡瘯鐪
  • vb 濡備綍鏀惧ぇ鎴栫缉灏忓浘鐗,鐢≒icture鎺т欢
    绛旓細鎶婁笅闈㈢殑500锛600鏀逛负浣犳兂瑕佺殑鍊硷紝鍗冲彲鏀瑰彉澶у皬锛岃浣忚鎶妏icture鐨刟utosize璁句负true Private Sub Command1_Click()With LoadPicture(File1.Path & "\" & File1.FileName).Render Picture1.hDC, 0, 0, 500, 600, 0, .Height, .Width, -.Height, 0 End With End Sub ...
  • vb.net 濡備綍鏀惧ぇ鍜缂╁皬鍥剧墖
    绛旓細Sub 鍥剧墖缂╂斁()Dim SngPer As Single = 1 '鏀惧ぇ鎴栫缉灏忕殑姣斾緥 鏀惧ぇ2鍊嶆椂SngPer=2,缂╁皬3鍊嶆椂 SngPer=1/3 Dim PicOld As Image = Image.FromFile("鍘熷浘鐗囪矾寰")Dim PicNew As New System.Drawing.Bitmap(PicOld, PicOld.Width * SngPer, PicOld.Height * SngPer)PicNew.Save("鏂板浘鐗...
  • VB 浠讳綍澶у皬鐨鍥剧墖 缁熶竴澶у皬 print
    绛旓細杈撳嚭鍥剧墖鐨勮瘽锛屽氨娑夊強鍒扮畻娉曚簡銆傛秹鍙婂埌宸肩畻娉曪紝鏈濂芥壘涓猚璇█鍐欑殑搴擄紝璋冪敤鍚с傜敤vb鍐欑殑璇濇槸娌℃湁鍓嶉旂殑锛屽緢鎱傚ぇ姒傜殑鍘熺悊灏辨槸绂绘暎鍗风Н锛岄変釜姣旇緝灏忕殑mask锛屽仛鍔犳潈骞冲潎銆傚鏋滀笉鎯宠嚜宸卞啓锛岃皟鐢╳indows鐨刡itblt涔熻锛屾晥鏋滀笉濂姐傜敤鎴戜笂闈㈣鐨勬柟娉曪紝鍙互鍋氱殑璺焢hotoshop涓鏍风殑鏁堟灉銆傜湅浣犵殑宸煎嚱鏁般傝秺...
  • 扩展阅读:免费缩小照片kb ... vb放大缩小字及恢复 ... 把照片缩小放在桌面上 ... 图片缩小在线处理 ... 图片缩放在线修改 ... 照片缩小200kb以内 ... 照片太小了怎么改大kb ... 怎么设置固定图片大小 ... 图片缩小尺寸保持清晰 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网