幾年前,我在Visual Basic中製作了一個滾動塊2D視頻遊戲。我正在將它翻譯成Mac的可可。有沒有一個框架可以讓我使用BitBlt?或者在沒有使用OpenGL的情況下是否有與BitBlt相當的功能?謝謝!Objective-C/Cocoa中的BitBlt()相當於
3
A
回答
2
你或許應該開始Core Graphics
2
馬特提到的,你可能想CGContextDrawImage
和CGContextSetBlendMode
。
首先,您需要從圖像數據中創建一個CGImageRef
。你可以通過數據提供者來做到這一點如果您已將圖像加載到內存中,則應使用CGDataProviderCreateDirect
。該數據提供者將是CGImageCreate
的參數。
接下來,在您的Cocoa視圖的drawRect:
方法,你要得到當前背景下是這樣的: CGContextRef cgContext = [[NSGraphicsContext currentContext] graphicsPort];
然後使用CGContextDrawImage
繪製圖像。
正如馬特所說,你可以控制與CGContextSetBlendMode
混合。
相關問題
- 1. QT4中的BitBlt?
- 2. 在hibernate 5.1.0中相當於@LazyGroup的hbm相當於hibernate 5.1.0
- 3. 相當於ODBC_中的mysql_affected_rows
- 4. Play中的ServletContextListener相當於
- 5. 相當於Python中的「do.call」
- 6. 相當於dotnet中的JasperReports
- 7. iOS中的System.IO.Path相當於
- 8. 相當於wpf中的CreateGraphics
- 9. Android中的SegmentedControl相當於
- 10. Python中的Mahout相當於
- 11. XNA中的ColorMatrix相當於
- 12. .NET中的WebSphere相當於
- 13. .Net中的SAX相當於
- 14. DB2中的generate_series()相當於
- 15. 相當於oracle中的sp_refreshview
- 16. emacs中的autoexp.dat相當於
- 17. 相當於Android中的javax.swing.Timer
- 18. 相當於Matlab的Python中
- 19. 相當於DataMapper中的find_each
- 20. 相當於C#中的sscanf_s?
- 21. 相當於WPF中的System.Windows.Forms.DataFormats.GetFormat
- 22. 相當於swift中的UIButtonTypeRoundedRect?
- 23. 相當於XCode中的「ListBox」?
- 24. PowerShell中的相當於SignTool.exe
- 25. 相當於Android的
- 26. 相當於JDIC?
- 27. 相當於AWS
- 28. Android:getElementsByTagName相當於?
- 29. Linq相當於
- 30. drupalPost()相當於
在此範圍內,最接近於一個點位blitter等價的是在myDrawFlag示例代碼中使用的CGContextDrawLayerAtPoint函數。請參閱: http://developer.apple.com/mac/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_layers/dq_layers.html#//apple_ref/doc/uid/TP30001066-CH219-TPXREF101 – 2009-10-26 12:50:07
謝謝!我敢肯定,這不允許你從一個圖像複製...在另一個圖像(它是矢量蒙版)中黑色(而不是白色)。它似乎是非常有用的複製瓷磚或rects和片段你創建的圖像,但不復制在Objective-C/Cocoa中預先加載爲NSImage的現有文件...並且肯定不會複製那些基於其矢量蒙版的圖像。儘管如此,如果我錯了,請糾正我。 – Brian 2009-10-26 16:56:47
您可以直接將圖像繪製到CGLayer中。當你這樣做時,你也可以掩飾。不過,你不必使用CGLayer(它只是最快的,因爲它緩存在顯卡上)。如果你想要實際的混合模式,你需要使用CGContextSetBlendMode和CGContextDrawImage。 – 2009-10-26 23:09:14