ba39.htm

来自「VB教程」· HTM 代码 · 共 113 行

HTM
113
字号
<HTML>
<HEAD>
<TITLE>VB中任意旋转位图的实现</TITLE>
 
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
 
</head>
<p align="center"><script src="../../1.js"></script></a>
<BODY topMargin=4 vLink=#0000ff>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
  <TBODY>
  <TR>
    <TD height="52"> 
      <DIV align=center>
      <CENTER>
          <table border=0 cellpadding=0 cellspacing=0 width=679 align="center">
            <tbody> 
            <tr> 
              <td width=200 height="59"> 
                 
    </TD></TR><!--msnavigation--></TBODY></TABLE>
<table border=0 cellpadding=0 cellspacing=0 width="100%">
  <tbody> 
  <tr><!--msnavigation--><td valign=top height="123"> 
      <div align=center> 
        <table border=1 bordercolor=#b9d9ff cellpadding=0 cellspacing=0 
      class=table width=755>
          <center>
            <tr> 
               
              <td width="100%" height="20"> 
                <div align="center"> <strong><b>VB中任意旋转位图的实现</b></strong></span></div>
              </td>
            </tr>
            <tr> 
              <td 
            width="100%" class="unnamed1" height="124"> 
                <div align="left">
                  <p align="center"><strong><b></b></strong></p>
                  <p align="left"> 转载自《计算机世界日报》 (文/严冬)</font></p>
                  <p class="font" align="left"> &nbsp;&nbsp;&nbsp; 
                    在VISUAL BASIC 中 没 有 什 么 命 令 或 函 数 能 够 实 现 将 一 个 位 图 旋 转 一 
                    个 角 度 后 显 示 出 来, 但 我 们 可 以 用 画 点 的 方 式, 将 一 个 图 画 盒 中 的 位 
                    图 中 的 像 素 点 旋 转 一 个 角 度 后 画 入 另 一 个 图 画 盒 中, 当 源 图 画 盒 中 的 
                    像 素 都 被 画 到 目 标 图 画 盒 中 时, 也 就 完 成 了 位 图 的 旋 转。 </font></p>
                  <p align="left"><font color="#ffffff" size="-1" face="宋体">----</font>  
                    这 里 主 要 用 到 了VISUAL BASIC 中 的 两 个 方 法:POINT 方 法 和PSET 方 法。POINT 
                    方 法 的 作 用 是 从 源 图 画 盒 中 提 取 一 个 像 素 点 的 颜 色 值; 而PSET 方 法 的 
                    作 用 是 按 照 旋 转 后 的 坐 标 和 相 应 像 素 点 的 颜 色 值 在 目 标 图 画 盒 中 画 
                    点。 显 然 这 个 方 法 的 速 度 不 会 太 快, 因 而 适 用 于 较 小 的 图 片。 下 面 介 绍 
                    一 下 实 现 方 法: </font></p>
                  <p align="left"><font color="#ffffff" size="-1" face="宋体">----</font>  
                    进 入VISUAL BASIC 中, 建 立 一 个 新 的 窗 体。 在 窗 体 中 加 入 两 个 图 画 盒 
                    控 件(Picture1 和Picture2), 设 置 它 们 的Name 属 性 为PicSource 和PicTarget, 
                    并 为PicSource 图 画 盒 的 Picture 属 性 设 置 一 幅 位 图。 再 在 窗 体 中 加 
                    入 一 个 按 钮(CommandRotorate), 设 置 它 的 Caption 属 性 为“ 旋 转”。 然 
                    后 加 入 以 下 代 码: </font></p>
                  <div align="left"> 
                    <pre><font size="-1" face="宋体">Option Explicit
Const Pi = 3.14
Private Sub CommandRototate_Click()
    Dim x As Integer, y As Integer
    Dim X1 As Integer, Y1 As Integer
    Dim X2 As Double, Y2 As Double
    Dim X3 As Double, Y3 As Double
    Dim JiaoDu As Double
    Dim HuDu As Double
    JiaoDu = 45               ' 角 度
    HuDu = JiaoDu * Pi / 180    ' 弧 度
    PicSource.ScaleMode = vbPixels
    PicTarget.ScaleMode = vbPixels
    For x = 0 To PicTarget.ScaleWidth
        X1 = x - PicTarget.ScaleWidth \ 2
        For y = 0 To PicTarget.ScaleHeight
            Y1 = y - PicTarget.ScaleHeight \ 2
            X2 = X1 * Cos(-HuDu) + Y1 * Sin(-HuDu)
            Y2 = Y1 * Cos(-HuDu) - X1 * Sin(-HuDu)
            X3 = X2 + PicSource.ScaleWidth \ 2
            Y3 = Y2 + PicSource.ScaleHeight \ 2
            If X3 &gt; 0 And X3 &lt; PicSource.Scale
           Width - 1 And Y3 &gt; 0 And Y3 
           &lt; PicSource.ScaleHeight - 1 Then
            PicTarget.PSet (x, y), PicSource.Point(X3, Y3)
            End If
        Next y
    Next x
End Sub</font></pre>
                  </div>
                  <p align="left"><font color="#ffffff" size="-1" face="宋体">----</font>  
                    运 行 后, 按 下“ 旋 转” 按 钮, 可 以 见 到 源 图 画 盒 中 的 位 图 旋 转45 度 后 进 
                    入 到 目 标 图 画 盒 中。 如 果 要 改 变 旋 转 的 角 度, 只 需 将JiaoDu 变 量 设 置 
                    为 相 应 值 即 可。</font>
                </div>
              </td>
            </tr>
          </center>
          <tr> 
            <td width="100%" class="unnamed1"> 
              <p align=right><a href="ba38.htm">(上一页)</a>---<a href="ba40.htm">(下一页)</a></p>
            </td>
          </tr>
          <tr> 
            <td width="100%" class="unnamed1"> 
               
    </div>
      </td>
  </tr>
  <!--msnavigation--></tbody>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?