linux下c语言绘图库_图形-Haskell像素绘图库linux

在我看来,您实际上并没有在此处绘制任何内容.您确定setColors会按照您的想法工作吗?如果需要内存,那是为8位表面设置调色板,而您明确地设置为32位视频模式.

顺便说一句,如果您确定之前已经完成了图形编程,那么我会知道其中的区别,但是对于其他阅读者来说,这是有益的:8位视频模式将像素颜色作为8位索引存储到256色表中从更大的一组潜在颜色中进行选择;在较高的颜色深度时,就不需要使用调色板表,而是将每个像素颜色直接存储为打包的RGB三元组,通常每个像素为8位(32位像素也具有8位alpha通道,或者只有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

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程序员,因此不应将我的建议视为正确使用该语言的指示.仅限于外用.不要嘲笑快乐乐团IO Monad.

无论哪种方式,我都认为您的问题在于使用SDL,而不是Haskell. Graphics.UI.SDL非常原始,只不过是将C API包装在适当的Haskell类型中.如果您以前没有使用过SDL,或者仅使用了稍微复杂一些的绑定(例如PyGame),则可能需要考虑在C中寻找SDL示例作为参考资料.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值