如何将像素转换为索引

时间:2018-03-29 04:59:14

标签: c++ allegro allegro5

问题是我需要更改矩阵,我只需要以像素using System.Linq; a = a.OrderBy(e => (int) Math.Abs(e - b)).ToArray(); foreach (var x in a) Console.Write("{0} ", x); x的形式访问这些位置,如何将yx转换为一个指标?

例如:

y

char *map[20][17] = { "WWWWWWWWWWWWWWWW", "WFFFFFFFFFFFFFFW", "WFWWWWWFFWWWWWFW", "WFFFFFFFFFFFFFFW", "WFWWWWWFFWWWWWFW", "WFFFFFFFFFFFFFFW", "WFWWWWWWWWWWWWFW", "WFFFFFFWWFFFFFFW", "WFFFWFFWWFFWFFFW", "WFWWWFFFFFFWWWFW", "WFWFFFWWWWFFFWFW", "WFFFWFFFFFFWFFFW", "WFWWWFWFFWFWWWFW", "WFFFWFWWWWFWFFFW", "WFFFFFFFFFFFFFFW", "WFFFWWWWWWWWFFFW", "WFWFFFFFFFFFFWFW", "WFWWWWWFFWWWWWFW", "WFFFFFFFFFFFFFFW", "WWWWWWWWWWWWWWWW"};

使用int x_pac = 240, y_pac = 360;x_pac访问y_pac上的某个位置,在这种情况下,每个字符都有height = 30和width = 30.

2 个答案:

答案 0 :(得分:1)

你可以简单地将x-y位置除以宽度和高度。 row = y_pac / heightcol = x_pac / width

答案 1 :(得分:0)

我想我可以看到你的意见。

所以你有一个包含位图集合的地图"图像"字符。 每个位图的大小"图像"字符可以变化(例如30x30)。

对于这个例子说:你有4x4字符映射,每个字符的维度为6x6。

enter image description here

如果要访问特定字符中的特定像素,请使用以下公式:

// matrix dimension
matrix_row = <row>
matrix_col = <col>

// bitmap dimension
char_row = <char_row>
char_col = <char_col>
num_pixels = char_row * char_col

// get specific "character" in grid
character_index = ((matrix_row - 1)  * matrix_col) * num_pixels

// get specific "pixel" in character
pixel = character_index * ((char_row - 1) * char_col + pixel_offset)