Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2023
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
Construir imagen a partir de valores numéricos

Antes que nada, muchas gracias por su ayuda.

Tengo un archivo *.txt cuyo contenido son 3 columnas y muchas filas.

columna 1 = coordenada X
columna 2 = coordenada Y
columna 3 = dato cuyo valor deseo representar

Necesito utilizar esta información para construir una imagen. las coordenadas de X y Y serían utilizadas para dar ubicación al dato de la columna 3.
La cantidad de posibles valores de los datos de la comlumna 3 no supera los 200.
Finalmente, necesito colocar esta imagen en un formulario, donde sea posible acercarla, alejarla, moverla.

Nuevamente agradezco el tiempo que se toman en ayudar.
Responder Con Cita
  #2  
Antiguo 06-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hace 10 años preguntaste algo similar
Pregunta cualquier aclaración que requieras o duda que tengas.
Responder Con Cita
  #3  
Antiguo 07-08-2023
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
Lo siento, no recordaba que habia preguntado antes lo mismo. En su momento terminé trabajando con sistemas de información geográfica.

Las respuestas que hace años me dieron me ayudan bastante. Sin embargo, ¿existe algún componente que pueda utilizar para el mismo fin? Tal vez exista algo nuevo
Responder Con Cita
  #4  
Antiguo 07-08-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que no queda muy claro lo que quieres, yo entiendo que es un simple gráfico:


Responder Con Cita
  #5  
Antiguo 07-08-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 299
Poder: 3
pgranados Va por buen camino
Yo tampoco entendí bien que es lo que buscas hacer.

Copie y pegue tu pregunta en ChatGPT y me dio escribió un código. No se si sea lo que busques

Código Delphi [-]
unit MainFormUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, System.Generics.Collections;

type
  TCoordinate = record
    X, Y: Integer;
    DataValue: Integer;
  end;

  TMainForm = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
  private
    CoordinatesList: TList;
    MaxDataValue: Integer;
    MinDataValue: Integer;
    procedure LoadDataFromFile(const FileName: string);
    procedure DrawImage;
    procedure CenterImage;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  CoordinatesList := TList.Create;
  LoadDataFromFile('ruta_del_archivo.txt');
  DrawImage;
  CenterImage;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  CoordinatesList.Free;
end;

procedure TMainForm.LoadDataFromFile(const FileName: string);
var
  FileStream: TStreamReader;
  X, Y, DataValue: Integer;
  Coordinate: TCoordinate;
begin
  if not FileExists(FileName) then
    raise Exception.Create('El archivo no existe.');

  FileStream := TStreamReader.Create(FileName);
  try
    while not FileStream.EndOfStream do
    begin
      FileStream.ReadLine;
      if TryStrToInt(FileStream.ReadLine, X) and
         TryStrToInt(FileStream.ReadLine, Y) and
         TryStrToInt(FileStream.ReadLine, DataValue) then
      begin
        Coordinate.X := X;
        Coordinate.Y := Y;
        Coordinate.DataValue := DataValue;
        CoordinatesList.Add(Coordinate);

        // Actualizar los valores máximos y mínimos para escalar correctamente la imagen
        if DataValue > MaxDataValue then
          MaxDataValue := DataValue;
        if DataValue < MinDataValue then
          MinDataValue := DataValue;
      end;
    end;
  finally
    FileStream.Free;
  end;
end;

procedure TMainForm.DrawImage;
var
  I: Integer;
  DataRange: Integer;
begin
  Image1.Picture.Bitmap.SetSize(Image1.Width, Image1.Height);
  DataRange := MaxDataValue - MinDataValue;
  for I := 0 to CoordinatesList.Count - 1 do
  begin
    with CoordinatesList[i] do
    begin
      // Escalar el valor del dato al rango 0-255 para asignar el color en la imagen
      Image1.Picture.Bitmap.Canvas.Pixels[X, Y] := RGB(0, Trunc(255 * (DataValue - MinDataValue) / DataRange), 0);
    end;
  end;
end;

procedure TMainForm.CenterImage;
var
  ImageRect, ClientRect: TRect;
begin
  ImageRect := Image1.BoundsRect;
  ClientRect := ClientRect;
  OffsetRect(ImageRect, (ClientRect.Width - ImageRect.Width) div 2, (ClientRect.Height - ImageRect.Height) div 2);
  Image1.BoundsRect := ImageRect;
end;

procedure TMainForm.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    Image1.BeginDrag(True);
end;

procedure TMainForm.Image1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
  var Handled: Boolean);
begin
  // Acercar o alejar la imagen según la dirección del scroll
  if WheelDelta > 0 then
    Image1.Width := Image1.Width + 10
  else
    Image1.Width := Image1.Width - 10;

  Image1.Height := Image1.Width;
  CenterImage;
  Handled := True;
end;

end.
Responder Con Cita
  #6  
Antiguo 08-08-2023
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
Cita:
Empezado por pgranados Ver Mensaje
Yo tampoco entendí bien que es lo que buscas hacer.

Copie y pegue tu pregunta en ChatGPT y me dio escribió un código. No se si sea lo que busques

Código Delphi [-]
...
Creo que esto es lo que necesito, voy a intentarlo. ¡Te agradezco mucho!
Responder Con Cita
  #7  
Antiguo 07-08-2023
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por gusspagano Ver Mensaje
información para construir una imagen. las coordenadas de X y Y serían utilizadas para dar ubicación al dato de la columna 3.
Faltan muchos datos! Que tipo de imagen, que formatos, que es "ubicación", etc!
__________________
El malabarista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
saber valores de base de piramide a partir de su resultado aguml Varios 19 05-03-2015 15:02:03
Crear Imagen A Partir De Texto (x,y,z) gusspagano Gráficos 17 23-10-2012 23:49:33
Como descargar una imagen a partir de la url Oxis Internet 2 20-07-2006 21:04:56
Alineacion de valores numericos en Printer JOMABRI Impresión 11 27-07-2005 18:55:27
Como manipular los pixeles la matriz de valores en una imagen en escala de grises erocha Gráficos 4 30-11-2003 07:20:32


La franja horaria es GMT +2. Ahora son las 20:02:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi