Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Vie 19 Ene, 2018 5:19 pm Asunto: detectar de la rejilla en pantalla |
|
|
pinto una rejilla con este codigo
| Código: | for (int y = 0; y < 15; ++y)
{
for (int x = 0; x < 13; ++x)
{
TPoint pos = PosPt(x, y);
/* --> */ celda[x][y].rect = TRect(pos.x, pos.y+80, pos.x + hexbitmap1->Width, pos.y + hexbitmap1->Height);
celda[x][y].flag = false;
if(color == 1) TABLERO->Canvas->Draw(pos.x, pos.y+80, hexbitmap1->Picture->Graphic);
else if(color == 2) TABLERO->Canvas->Draw(pos.x, pos.y+80, Image20->Picture->Graphic);
}
}
|
hasta ahi todo bien, la pinta sin problemas.....
el problema viene cuando intento detectar la casilla de pantalla seleccionada con el raton encima (coordenadas de CELDA) segun un codigo que me proporcionó Leo que es este que va en el evento OnMouseMove de la imagen donde pinta el tablero
| Código: | static int oldCol = 0, oldRow = 0;
// Busca celda
bool found = false;
int col, row;
for (int y = 0; y < 15 && !found; ++y)
{
for (int x = 0; x < 13; ++x)
{
TPoint pos = PosPt(x, y);
if (PtInRect(celda[x][y].rect, Point(X, Y)) &&
!hex_small_mask->Picture->Bitmap->Canvas->Pixels[X - pos.x][Y - pos.y])
{
found = true;
col = x;
row = y;
if (col == oldCol && row == oldRow) return;
}
}
}
Caption = found ? String().sprintf(L"%d, %d", col, row) : String("<no>");
oldCol = col;
oldRow = row; |
Ah si, el pintado le sumo +80 al pos.y para que deje un margen por encima y no lo pinte al inicio de la imagen (0,0)
creo que el problema tiene facil solucion pero no acabo de dar con ello..... |
|