如何用VB画矢量图

周传辉自锁螺钉
(武汉冶金科技大学 , 武汉
430070)
电动车电池修复器
摘  要  本文利用 VB 提供的函数巧妙地实现了矢量图的绘制 ,  所提供的程序可直接读取数据计算
的结果 ,  绘制并打印矢量图 ,  同时还具有比例调节功能 ,  使用非常方便 。
关键词 VB 编程 ,    绘矢量图 , 流场显示
数值计算中 ,经常要画矢量图 ,比如 ,速度场 如 :
i 1 1
的分布 。构造一个任意方向的矢量是不容易 的 , 因为 , Vi  s ual B a  s ic 没有现成的函数 , 笔者利用 VB 提供的画点 、线及扇形的函数 , 很巧妙地实现 了这一点 ,下面简要介绍其方法 。
VB 的 Ci  r cle 函数功能十分强大 ,  它既可以 画圆 、弧 、椭圆 ,又可以画扇形 ,同时还具有填充功
能 。把填充的扇形做为矢量的箭头 ,  就可以画出 任意方向的矢量图 。
主要函数说明 :
j 1 2
x 10 10
y 10 20
u 5. 0 -  5. 0
v 2. 2 3. 2
······
( x  , y ) , r a  di u  s  , co l o r  , Ci r  c l e  -  st a  r t ,  -  e n d
其中 :
( X , Y ) ra di us co lo  r
-  st a  r  t  箭头的顶点坐标
箭头的大小 (扇形的半径)
扇形边框的颜 扇 形 的 起 始
角 度  ( 用 弧 度 表 示) ,前面带负号表示画扇形
扇 形 的 结 尾 角 度  ( 用 弧 度 表 -  e  n  d  示) ,前面带负号表示画扇形
程序界面与结果显示
1
量 矢 画
B  V  用 何 如
4 程序清单及说明
(窗口和菜单部分略) sho w - C lic k  En d
Sub
m e  =  ″Fo r  m 1″
Cr eat a  b le  =  Fal s e At t  ri b ut e  VB At t  ri b ut e  VB At t  ri b ut e  VB ’  矢量线段缩小程序
Pri v at e  Sub li n e  zo m  s  C lic k  ( ) Expo s e d  =  Fal s e zo m 1  =  zo m 1  -  0 . 1
If zo m 1  <  =  0 T h e n  zo m 1  =  1 C l s  sho w    C lic k  ’ 变量必须说明
’ 数组下标从 1 开始
Op t io n  Exp lici t  O p t io n Base 1钽酸锂晶片
’ zo m 1 线段缩放系数 ,zo
Di m  zo m 1 , zo m 2 As S i n  gle m2 箭头缩放系数 Di m  AL As S i n  g le
En d  Sub
’  打印图形程序 Pri v at e  Sub p r t  - C lic k  ( ) ’ 箭头长度
’ X , Y 方向的最大节点号 Di m  i ma x  , j m a x  As I n t e  g er Di m  x p ( 50) , yp ( 50) , u p ( 50 , 50) , v p ( 50 , 50)  As Do u b le ’ 网格为 50X50
Pri n t Fo r  m  En d  Sub ’ 退出程序
Pri v at e  Sub q ui t - C lic k  ( ) En d
En d  Sub
发布任务
’ 显示图形程序
Pri v at e  Sub sho w    Clic k  ( )
’ 圆周率
’ 箭头角度 10 度
C o n st pi !  =  3 . 1415926 C o n st A !  =  0 . 1745 ’  箭头放大程序
Pri v at e  Sub ar r o w  zo m b  C lic k  ( ) zo m 2  =  zo m 2  +  0 . 1 ’ 比例系数增大 10 %
C l s  ’ 清屏 ’ 重新显示
sho w    Clic k  Di m  i , j As I n t e  g er Fill  Colo  r  =  QB  Colo  r  ( 12)
Fo  r  m  1. Hei  g h t  =  Fo  r  m  1. Wi  dt  h  Scale  ( x p ( 1)  Ξ 0 . 8 , yp (j ma x ) En d  Sub
’  箭头缩小程序
Pri v at e  Sub ar r o w  - z o m  - s - C lic k  ( ) ’ 取红为箭头填充
’ 保证窗口为正方形 Ξ 1 . 2)  -  ( x p (i m a x  ) Ξ 1 . zo m 2  =  zo m 2  -  0 . 1
If zo m 2  < =  0 T h e n  zo m 2  =  1 C l s  sho w  - C lic k
2 , yp ( 1) Ξ 0 . 8)
’ 用 X , Y 的最大和最小值建立坐标系
’ 填充模式为透明模式 Fill S t yle  =  1 L i  n e ( x p ( 1)  Ξ 0 . 9 , yp (j ma x )  Ξ 1 . 1) -  ( x p (i ma x  ) Ξ 1 . 1 , En d  Sub
’ 装载窗体 ,赋初值及读入数据 Pri v at e  Sub Fo r  m  Lo a  d  ( ) yp ( 1) , B ’
Ξ 0 . 9) , 画一个显示边框 Fill S t y le  =  0 Di m  x , y , z , u , v As S i n  g le Di m  i , j As I n t e  g er
zo m 1  =  1 : zo m 2  =  1 : AL  =  2
’ 打开实心填充模式 Fo r  i  =  1 To i m a x  Fo r  j  =  1 To j ma x
P S et (x p (i) , y p (j )) , QB C olo r  (12)
O p e  n  ″x y uv . dat ″Fo r  I n p ut As Do  While No t  EO F ( 1) I n p ut  # 1 , i , j , x , y , u , v x p (i )  =  x : yp (j )  =  y ’ 打开数据文件 # 1 ’定矢量线的起点
L i  n e  -  ( x p (i )  +  u p (i , j )  Ξ zo m 1 , yp (j
)  +  v p (i , j )  Ξ zo m 1) , QB C olo r  ( 9)  ’ 画线 ar r o w  x p (i ) ,  yp (j ) ,  u p (i , j ) ,  v p (i , j ) Ne x t j : Ne x t i  En d  Sub ’ 画箭头程序钢板切割
’  画 箭 头
u p (i , j )  =  u : v p (i , j ) Loo p C lo s e  # 1
=  v i ma x  =  i : j ma x  =  j
’ x ,y 方向的最大节点值
Pri v at e  Sub ar r o w  (B y V al x ! , B y Val y ! , B y Val u ! , B y  V al v !)
Di m  a n  g le , k , x 0 , y 0 , colo r  , AA As S i n  g le  ’ 保证窗体为正方形 ,否则 , Fo r  m 1 . Hei g  h t  =  Fo r  m 1 . Wi d t h  箭头位置不能正确显示 En d  Sub
’  矢量线段放大程序 Priat e  Sub li n e - zo m - b - C lic k  ( ) zo m 1  =  zo m 1  +  0 . 1 C l s
x 0  =  x  +  u  Ξ zo m 1 y
0  =  y  +  v  Ξ zo m 1 AA  =  AL  Ξ zo m 2
colo r  =  QB C olo r  ( 12)
Select  Case u
’ 箭头顶点 x 坐标
’ 箭头顶点 y 坐标
’ 箭头长度
’ 箭头边框的颜
’ 判断 X 方向速度的方向
M OD  E R N C O  M  P U T  E R
4●
7
双柱汽车举升机
Case 0 # k  =  0 . 5
If  ( v  >  0)  T h e n  k  =  1 . 5
C i r cle (x0 , y 0) , AA , c olo r  , -  (k  Ξ p i  - Case Is  >  0 # k  =  2
If  ( v  <  0)  T h e n  k  =  0
’  当矢量线与 X 轴的夹角小于箭头的夹角时 , 要进行特殊 的处理
A ) , -  (k  Ξ p i  + A ) If  ( A bs (a n  g le ) < =  A )  T h e n
a n g le  =  At n  ( v /  u ) If  ( v  =  0 # )  T h e n
’ 求斜率
C i r cle ( x  0 , y 0) , AA , colo r  ,  -  ( 2  Ξ p i  +  a n  g le  -  A ) , -  ( 2  Ξ p i )
C i r cle  ( x  0 , y 0) , AA , colo r  ,  -  (p i El s e
C i r cle  ( x  0 , y 0) , AA , colo r  ,  -    A ) ,  -  (p i +  A
)
( x  0 , y 0) , AA , colo r  ,  - ( 0 . 001) ,  -  ( A  +  a n 2 - C i r cle g le )
(p i +  a n  g le - A ) , - El s e
C i r cle (p i  +  a n  g le En d  If +  A ) ( x  0 , y 0) , AA , colo r  , -    ( k  Ξ p i  +  a n  g le -
A ) ,  -  ( k  Ξ p i En d  If
En d  If En d  Select En d  Sub
+  A
) +  a n  g le Case Is  <  0 # =  At n  (
v /  u ) ’ 求斜率
a n g le If  ( v  =  0 # )  T h e n  ’ 从 0
C i r cle ( x  0 , y 0) , AA , colo r  ,  - 0 . 001 ,  - A
起画扇形不封闭 Ci r cle  ( x  0 , y 0) , AA , colo r  ,  -  ( 2  *  p i  -  A ) ,  - 2  *  p i  El s e
(收稿日期 : 1998. 7. 9)
Ho  w to D  r a  w  a V  e cto  r Dia  g ra  m  wi  t  h VB
Z ho  u C h ua  n  h  u i
( W u h a n  YeJ i n  U ni v e r  s i t  y  Of  Scie n ce A n  d  Tec h  n o lo g y )
Ab s t r  a  c t Thi s  p a p e  r  de s c r i b e s  t he met ho d  of drawi n  g  a vecto r  dia g  r a m  wi t  h V I SU AL BA S I C a n  d  g i v e s
so u rce p ro g r a m  t hat ca n  i m  m e d iat e l y  rea d  t he dat a  f ro m  n u  m e r al calc u lat i o n  , di s p la y  a n  d  p lo t  t he vecto r  dia g  r a m  .  It i s  co n ve n ie n t to a d j u st p ro p o r  t  i o n  of t he dia g r a m  b y usi n g t he p r o g  r a m  .
Ke y wo r  d
VB p ro g r a m  , V e cto r  dia g  r a m  Fl u i d f i el d  di s p la y
,

本文发布于:2024-09-22 03:51:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/269724.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:箭头   程序   方向   扇形
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议