- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望在窗口或其他东西的屏幕上绘制单个像素,以便在 haskell 中实时显示。
我刚刚开始使用 haskell(但不是函数式编程,也不是图形),所以我尝试用它创建一些基本的图形东西。
我尝试使用 SDL,但以下代码给我一个空白屏幕:
import Prelude
import Graphics.UI.SDL as SDL
createColor screen r g b = SDL.mapRGB (SDL.surfaceGetPixelFormat screen) r g b
drawGrad screen = SDL.setColors screen [SDL.Color x y 255 | x <- [0..255], y <- [0..255]] 800
main = do
SDL.init [InitEverything]
setVideoMode 256 256 32 []
screen <- getVideoSurface
drawGrad screen
SDL.flip screen
quitHandler
quitHandler :: IO ()
quitHandler = do
e <- waitEvent
case e of
Quit -> return ()
otherwise -> quitHandler
最佳答案
在我看来,你实际上并没有在那里画任何东西。您确定 setColors 能实现您认为的功能吗?如果我没记错的话,它是为 8 位表面设置调色板,而您是明确设置 32 位视频模式。
顺便说一句,如果您之前做过图形编程,我相信您知道其中的区别,但为了其他人阅读本文的利益:8 位视频模式将像素颜色存储为从更大的一组潜在颜色中选择的 256 种颜色表的 8 位索引;在更高的颜色深度中,调色板表被省略,每个像素颜色直接存储为打包的 RGB 三元组,通常每个 8 位(32 位像素也有一个 8 位 alpha channel ,或者只有 8 位填充以获得更好的内存对齐,我不记得了)。
无论哪种方式,如果我正确地猜测您正在尝试做什么,请尝试将其添加到您的程序中:
import Ix
-- Given coordinates, create a 1x1 rectangle containing that pixel
getPix x y = SDL.Rect (fromIntegral x) (fromIntegral y) 1 1
-- Draw a pixel on a surface with color determined by position
drawPixel surf (x, y) = do
let pixRect = Just (getPix x y)
pixColor <- createColor surf x y 255
SDL.fillRect surf pixRect pixColor
-- Apply drawPixel to each coordinate on the screen
drawGrad screen = mapM_ (drawPixel screen) $ range ((0,0),(255,255))
警告:这几乎肯定是可怕且低效的代码,并且仅在 Win32 环境中进行了测试。我不是一名合格的 Haskell 程序员,我的建议不应被视为正确使用该语言的指示。仅限于外用。不要 mock Happy Fun IO Monad。
无论哪种方式,我认为你的问题在于使用 SDL,而不是 Haskell。 Graphics.UI.SDL 非常原始,只不过是将 C API 包装在适当的 Haskell 类型中。如果您以前没有使用过 SDL,或者仅将其用于稍微复杂的绑定(bind)(例如 PyGame),您可能需要考虑寻找 C 语言的 SDL 示例作为引用 Material 。
关于graphics - Haskell 像素绘图库 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1857075/
我想知道如何在 OCaml 中设置文本大小。我尝试了 Graphics.set_text_size,我猜这应该可以解决问题。 但是无论我输入 set_text_size 200 还是 set_text
我想使用mathematica 为我正在写的书绘制图表。我想在mathematica中画一个图,将其保存为图片,然后将其导入到quarkxpress中,最后将其导出为pdf。 我的问题是最好使用哪种格
在顶层加载 Graphics 模块时,我收到一条错误消息“找不到 graphics.cma”。 我使用的是 OS X,而且我很确定我已经正确安装了 OCaml,因为我已经使用了大约一个月了。所以看起来
我知道 DDS 文件的存在,允许在 as/400 上对显示图形进行编程,但是还有其他方法吗? 具体来说,我想要做的是直接操作终端缓冲区,以便能够显示除文本之外的任何其他内容。例如,终端如下所示: 假设
Graphics.Save 与 Graphics.BeginContainer 有何不同? 最佳答案 看看here : The documentation does not differentiate
由于 Gdiplus::Graphics::DrawGraphics(Graphics*, x, y) 不存在,执行此类操作的最佳方法是什么? 例如,创建一个 Graphics 对象,使用各种 Dra
你能看出这有什么问题吗: (define (box d x1 y1 x2 y2) ( (graphics-draw-line d x1 y
我想编写一个 2D 游戏引擎。我遇到的问题(我不使用opengl之类的东西,所以我用cpu渲染)是,我通过graphics.drawImage()只得到7fps;您有任何加快速度的建议或其他替代方案吗
我在某些代码中发现了渲染错误,并找到了解决方法,但我想知道为什么我会得到不同的行为。在旧代码中,背景(有时)会呈现为白色,尽管在调试时 getBackground() 会返回正确的颜色。 旧代码: @
有谁知道是否有办法(也许通过外部API)将图形绘图/转换为多个图形?这个想法是同时保存 PNG 和 PDF(使用 Java IText 库)。 最佳答案 您可以将 Graphics 对象写入(java
我试图了解如何在英特尔芯片组上以 x86 保护模式绘制简单图形。我已经(有点)知道如何使用 VGA 接口(interface)来做到这一点,并且我正在尝试了解如何使用 G35 Express 来做到这
在我的应用程序中,我生成了一个条形码图像,该图像是根据用户使用 OpenFileDialog 上传的文件中的数据生成的。我的目标是允许用户在屏幕上查看条形码数据和图像本身,打印并使他们能够将两者保存为
我是 Java 新手,我只是想得到一些简单的东西,可能类似于 Zelle's graphics对于Python。 最佳答案 Java 类 Graphics和 Graphics2D应该包含 Zelle
如何将 FMX.Graphics.TBitmap 转换为 VCL.Graphics.TBitmap 或 Vcl.Imaging.PngImage.TPngImage? 我的项目中有FMX表单和VCL表
我需要找到用于间距目的的字体大小,发现这很有帮助:https://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html 但是,我不确定如
我有一点奇怪的错误是由一个看似简单的问题引起的。 在我的源代码中,我尝试使用 QQuickPaintedItem 来呈现 QWidget 派生类 (QPushButton) 的整体外观,然后将其绘制到
我正在尝试通过具有以下规范的设备来解决 Android 应用程序崩溃的问题: Device PAP3400DUO 1 Manufacturer — Android version Android 4.
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有这行代码: mBgTransition = (TransitionDrawable) mSwitchBg.getBackground(); 背景曾经是一个常规的可绘制对象, 但现在是 9 个补丁
当我的应用程序在启动时崩溃时尝试实现自适应图标时出现此错误。 我无法想象为什么会收到此错误,因为在下面错误日志中提到的文件(MainActivity 和 BaseActivity)中,我没有使用Ada
我是一名优秀的程序员,十分优秀!