Lua绘制正弦曲线

夜半突来兴致,看了下wxLua的图形处理部分,感觉挺好玩,就试着写了一段画正弦曲线的代码。为了实现动画效果特意添加了延迟效果,感觉延迟的效率好低,画的时候窗口拖都拖不动。

效果图:


代码部分:

ExpandedBlockStart.gif 代码
--  --------------------------
--
 点和线实现正弦曲线
--
 wxLua支持

--  Aurhor Chuwp
--
 Date 2010.10.30
--
 --------------------------




require ( " wx " )

local  nMotionFlag  =   0

--  -------------
--
 主函数
--
 -------------
function  main()
    frame 
=  wx.wxFrame( wx.NULL, wx.wxID_ANY,  " wxLua Scribble " ,
                        wx.wxDefaultPosition, wx.wxSize(
450 450 ),
                        wx.wxDEFAULT_FRAME_STYLE )

    
if  nMotionFlag  ==   0   then
        frame:Connect(wx.wxEVT_LEFT_DOWN, OnLClick)
    
end

    frame:Show(
true )
end


--  ----------------------
--
 左键点击开始画曲线
--
 ----------------------
function  OnLClick(event)
    nMotionFlag 
=   1
    
local  drawDC  =  wx.wxClientDC(frame)
    pen 
=  wx.wxPen(wx.wxColour( 0 255 0 ),  1 , wx.wxSOLID)
    drawDC:SetPen(pen)

    
-- 坐标轴X
     for  i = 50 300   do
        
-- drawDC:DrawLine(1, 1, 100, 100)
         if  math.mod(i, 2 ==   0   then
            drawDC:DrawPoint(
50 , i)
        
end
    
end

    
-- 坐标轴Y
     for  j = 30 400   do
        
if  math.mod(j, 2 ==   0   then
            drawDC:DrawPoint(j, 
175 )

            
if  math.mod(j, 20 ==   0   then
                
for  k  =   0 6   do
                    drawDC:DrawPoint(j, 
175 - k)
                
end
            
end
        
end
    
end

    
-- 正弦曲线
     local  nTempX  =   50
    
local  nTempY  =   175

    pen 
=  wx.wxPen(wx.wxColour( 255 0 0 ),  1 , wx.wxSOLID)
    drawDC:SetPen(pen)
    
for  i = 50 400   do
        delay()
        
local  nRec  =  i / 12
        drawDC:DrawLine(nTempX, nTempY, i, 
175 + 50 * math.sin (nRec))
        nTempX 
=  i
        nTempY 
=   175 + 50 * math.sin (nRec)
    
end

    drawDC:SetPen(wx.wxNullPen)
end

--  ----------------
--
 延迟处理
--
 ----------------
function  delay()
    
local  x  =   os.clock ()
    
while   os.clock () - <=   0.01   do   end
end

main()
wx.wxGetApp():MainLoop()

 

转载于:https://www.cnblogs.com/chuwp/archive/2010/10/30/1864911.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值