⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 09.txt

📁 介绍VB里的各种控件的使用方法,窗口控制,图像编程以及OCX等内容,还提供了一个API集供参考.
💻 TXT
字号:
VB中任意旋转位图的实现 

冰 天 雪 地 软 件 
严 冬 
---- 在VISUAL BASIC 中 没 有 什 么 命 令 或 函 数 能 够 实 现 将 一 个 位 图 旋 转 一 个 角 度 后 显 示 出 来, 但 我 们 可 以 用 画 点 的 方 式, 将 一 个 图 画 盒 中 的 位 图 中 的 像 素 点 旋 转 一 个 角 度 后 画 入 另 一 个 图 画 盒 中, 当 源 图 画 盒 中 的 像 素 都 被 画 到 目 标 图 画 盒 中 时, 也 就 完 成 了 位 图 的 旋 转。 

---- 这 里 主 要 用 到 了VISUAL BASIC 中 的 两 个 方 法:POINT 方 法 和PSET 方 法。POINT 方 法 的 作 用 是 从 源 图 画 盒 中 提 取 一 个 像 素 点 的 颜 色 值; 而PSET 方 法 的 作 用 是 按 照 旋 转 后 的 坐 标 和 相 应 像 素 点 的 颜 色 值 在 目 标 图 画 盒 中 画 点。 显 然 这 个 方 法 的 速 度 不 会 太 快, 因 而 适 用 于 较 小 的 图 片。 下 面 介 绍 一 下 实 现 方 法: 

---- 进 入VISUAL BASIC 中, 建 立 一 个 新 的 窗 体。 在 窗 体 中 加 入 两 个 图 画 盒 控 件(Picture1 和Picture2), 设 置 它 们 的Name 属 性 为PicSource 和PicTarget, 并 为PicSource 图 画 盒 的 Picture 属 性 设 置 一 幅 位 图。 再 在 窗 体 中 加 入 一 个 按 钮(CommandRotorate), 设 置 它 的 Caption 属 性 为“ 旋 转”。 然 后 加 入 以 下 代 码: 

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 > 0 And X3 < PicSource.Scale
      Width - 1 And Y3 > 0 And Y3 
      < PicSource.ScaleHeight - 1 Then
      PicTarget.PSet (x, y), PicSource.Point(X3, Y3)
      End If
    Next y
  Next x
End Sub

---- 运 行 后, 按 下“ 旋 转” 按 钮, 可 以 见 到 源 图 画 盒 中 的 位 图 旋 转45 度 后 进 入 到 目 标 图 画 盒 中。 如 果 要 改 变 旋 转 的 角 度, 只 需 将JiaoDu 变 量 设 置 为 相 应 值 即 可。 

⌨️ 快捷键说明

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