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

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 07-08-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
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
 



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 14:02:03
Crear Imagen A Partir De Texto (x,y,z) gusspagano Gráficos 17 23-10-2012 22:49:33
Como descargar una imagen a partir de la url Oxis Internet 2 20-07-2006 20:04:56
Alineacion de valores numericos en Printer JOMABRI Impresión 11 27-07-2005 17:55:27
Como manipular los pixeles la matriz de valores en una imagen en escala de grises erocha Gráficos 4 30-11-2003 06:20:32


La franja horaria es GMT +2. Ahora son las 01:02:15.


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