如圖:
1張數字圖片,上面標有x2,x3,x4,x5四個數,螢屏中實作滾動效果,可以增加加減速。即加速-勻速-減速。目標是可以指定停的位置(即螢屏中心位置代表目標位置),例如停在“X4”,那“X4”就在中間。
請問C++怎么實作,請教下各位大佬。
uj5u.com熱心網友回復:
這可不是僅僅C++就能解決的,還需要作業系統及圖形API。當然,如果你能直接訪問顯示屏硬體,單片機裸機編程也能做出來。uj5u.com熱心網友回復:
樓主先瀏覽一下CSDN在本網頁下面自動推薦的各鏈接,如果還有剩下什么問題,再在此貼追問。uj5u.com熱心網友回復:
這都是渲染的東西,和你什么語言關系不大,問題的難點更偏向于怎么把圖輸出出來。有相關介面的話就是一個設定渲染紋理的偏移量的事。uj5u.com熱心網友回復:
補充一下,我專案用的是DirectX引擎uj5u.com熱心網友回復:
百度搜“DirectX 圖片平滑滾動”
uj5u.com熱心網友回復:
好像沒找到,您有嗎?uj5u.com熱心網友回復:
跟爐石那個差不多唄?跟滾筒抽獎差不多的效果唄?最后總是“旗鼓相當的對手”唄?
uj5u.com熱心網友回復:
對的,就是那樣的效果uj5u.com熱心網友回復:
簡單實作的話,比如效果就是,圖片從上往下滾動,先加速再勻速再減速停到“旗鼓相當的對手”,就一個逐幀影片。
那就先實作圖片的平移,
平移搞定了速度無非距離/時間,自動滾動就是定時平移圖片。
當然這里肯定不是移動到終點才sleep,而是sleep一個合適的最小的時間,然后控制移動到終點所要回圈的次數。
這樣差不多搞定了單次滾動的勻速的速度。
簡單效果就是逐步提高單次滾動速度,保持,再減小。
停,可以減速-勻速-減速-停止 停在你的位置。
uj5u.com熱心網友回復:
進階一點就要搞一下加速度了。其實也容易吧,可以簡單點做。比如從起點到終點回圈100次,分100個平移距離,當前速度是1,勻速是跨步1,就是回圈一次更新一次圖片位置并顯示。
加速就是加速度設為比如1,那么每次跨步都比上次多1就OK,1,2,3,4,這樣子,回圈一次分別在位置1,2,4,7,11顯示。這樣逐幀影片看起來就是真的逐漸加速。
uj5u.com熱心網友回復:
完整版的,除了搞代碼控制圖片滾動,還要多組圖片來支持的,圖片需要有不同速度運動模糊的效果的。在不同的速度使用不用組的圖。甚至簡單點,跟爐石一樣,滾起來馬上換GIF...啥也不用管,等需要停的時候再把GIF隱藏了換真的圖上去滾動。
uj5u.com熱心網友回復:
現在第一個問題就是平移怎么才能平移到想要平移的位置,而且平移的時候如果圖片移除螢屏后是拼接嗎?uj5u.com熱心網友回復:
簡單點兒就好,復雜的更不會了
uj5u.com熱心網友回復:
DirectX沒用過,顯示和重繪自己研究下。我百度了下還是有的。
圖片嘛,你先確定一個螢屏最多顯示多少圖。
這里假設總共5個,螢屏最多顯示3個,搞個圖片池, 移出螢屏了就把圖片先回收來,然后數量不夠3個需要從起點外面進來的時候,從池里拿出來,再扔到影片事件里去。生成也可以自定義順序,這樣顯示的圖就是隨意排序的
uj5u.com熱心網友回復:
最多顯示3個,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275919.html
標籤:C++ 語言
下一篇:OpenMP程式的編譯和運行
