2017-07-27 61 views
0

我嘗試創建條形,但輸出只是條形,而且我想像條形圖均衡器那樣上下移動條形,但我不知道確切的代碼。有人知道嗎?在Turbo C++圖形中創建混音器或均衡器

這裏有一個畫面:

而且我嘗試:

#include <stdio.h> 
#include <conio.h> 
#include <dos.h> 
#include <stdlib.h> 
#include <graphics.h> 

void main(){ 
    int gd = DETECT, gm; 
    initgraph(&gd,&gm, 「D:\\TC\\BGI」); 
    randomize(); 
    int x = 100; 
    int y,a; 
    setfillstyle(2,GREEN); 

    do{ 
     delay(100); 
     y = random(150); 
     if ((200-y) >=a){ 
      setfillstyle(2,BLACK); 
      bar (x,200-y,x+20,a); 
     } 
     else { 
      bar (x,200,x+20,200-y); 
     } 
     a = 200-y; 
    } 
    while(!kbhit()); 
    getch(); 
    closegraph(); 
} 
+0

以及'隨機'輸入這將很難實現。因爲如果沒有每幀初始化種子,它會閃爍很多,並且它會是靜態的。對於平滑模擬,您可以在開始時創建一組隨機正弦波,然後僅對每一幀進行迭代...另一種選擇是使用您當前的實現並在一段時間內在各個狀態之間進行插值... – Spektre

回答

0

你應該在你的主循環做重複:酒吧

  1. 計算位置

    您沒有提供任何有關輸入或輸出的信息。混頻器設備將更多信號混合在一起,而均衡器則是可調帶通濾波器陣列。那麼酒吧代表什麼?

    如果他們是過濾器GUI設置帶通濾波器,然後你需要爲他們添加接口,例如用鼠標或其他東西「移動」他們。因爲我們需要更多的信息.​​..

    如果條形圖代表光譜圖,那麼您需要在一些隨時間移動的輸入信號窗口上執行DFT

  2. 清楚緩衝器

    這被稱爲回緩衝或雙緩衝。如果我沒記錯的話BGI可以做到這一點。這個想法是渲染到內存中以避免閃爍,當圖像完成後將其複製到屏幕上。

  3. 條渲染緩衝

    這部分你聲稱你已經實現了所以沒必要解釋。

  4. 渲染緩衝區篩選

    這回/雙緩衝的最後一步,以避免閃爍

  5. 等待/休眠一段時間

  6. 檢測退出條件

    if active恩停止循環,否則去#1再次 ...

如果你想使鼠標GUI,那麼你需要添加鼠標事件處理程序。我認爲在Borland Turbo C++中有一些庫,但如果我誤會了你可以使用INT 33h定期通過輪詢來掃描鼠標狀態(這非常理想,但對於初學者很有用),或者掛鉤你自己的鼠標處理器。

這裏是一些相關的東西閱讀: