 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
paz Ens

Registrado: 22 Feb 2007Mensajes: 28
|
Publicado: Lun 07 May, 2007 12:14 pm Asunto: Mapas de gradientes |
|
|
hola,
estoy trabajando sobre una aplicacion de temperaturas, humedades... y necesito mostrar mapas de gradientes ( estos mapas de colores q representan la variabilidad de la temperatura sobre un espacio). La pregunta es, alguien a trabajado con eset tipo de mapas desde c++ y puede ayudarme en como generarlos?
gracias |
|
| Volver arriba |
|
 |
ZHAX1 Master

Registrado: 09 Mar 2007Mensajes: 191
|
Publicado: Mie 09 May, 2007 8:39 am Asunto: |
|
|
| con lmd tools tienes controles que dibujan gradientes, bajatelas y prueba. |
|
| Volver arriba |
|
 |
dobermannmx Master


Registrado: 30 Ago 2006Mensajes: 191Ubicación: Zapopan, Jal. - México
|
Publicado: Vie 18 May, 2007 9:17 pm Asunto: |
|
|
Paz, aqui te dejo un par de funciones para hacer degradados tanto horizontales como verticales, yo lo probe con un TPaintBox y funciona perfecto, suerte.
| Código: |
#include <Math> //Hay que incluirla
void __fastcall GradienteHorizontal(TCanvas *Canvas, TRect Rect,TColor FromColor, TColor ToColor)
{
int X,cnt;
double dr,dg,db;
TColor C1,C2;
BYTE R1,R2,G1,G2,B1,B2,R,G,B;
C1 = FromColor;
R1 = GetRValue(C1);
G1 = GetGValue(C1);
B1 = GetBValue(C1);
C2 = ToColor;
R2 = GetRValue(C2);
G2 = GetGValue(C2);
B2 = GetBValue(C2);
dr = double((R2-R1)) / (Rect.Right - Rect.Left);
dg = double((G2-G1)) / (Rect.Right - Rect.Left);
db = double((B2-B1)) / (Rect.Right - Rect.Left);
cnt = 0;
for(X = Rect.Left; X <Rect> Pen -> Color = (TColor) RGB(R,G,B);
Canvas -> MoveTo(X,Rect.Top);
Canvas -> LineTo(X,Rect.Bottom);
cnt++;
}
}
//---------------------------------------------------------------------------
void __fastcall GradienteVertical(TCanvas *Canvas, TRect Rect,TColor FromColor, TColor ToColor)
{
int Y,cnt;
double dr,dg,db;
TColor C1,C2;
BYTE R1,R2,G1,G2,B1,B2,R,G,B;
C1 = FromColor;
R1 = GetRValue(C1);
G1 = GetGValue(C1);
B1 = GetBValue(C1);
C2 = ToColor;
R2 = GetRValue(C2);
G2 = GetGValue(C2);
B2 = GetBValue(C2);
dr = double((R2-R1)) / Rect.Bottom - Rect.Top;
dg = double((G2-G1)) / Rect.Bottom - Rect.Top;
db = double((B2-B1)) / Rect.Bottom - Rect.Top;
cnt = 0;
for(Y = Rect.Top; Y <Rect> Pen -> Color = (TColor) RGB(R,G,B);
Canvas -> MoveTo(Rect.Left,Y);
Canvas -> LineTo(Rect.Right,Y);
cnt++;
}
}
//---------------------------------------------------------------------------
void __fastcall TfPrincipal::pbGradientePaint(TObject *Sender)
{
GradienteHorizontal(pbGradiente -> Canvas,pbGradiente -> ClientRect, clRed,clYellow);
//GradienteVertical(pbGradiente -> Canvas,pbGradiente -> ClientRect, clRed,clBlue);
pbGradiente -> Canvas -> Brush -> Style = bsClear;
pbGradiente -> Canvas -> TextOut(10,10,"Un Texto Transparente");
}
//---------------------------------------------------------------------------
|
_________________ ISC
Dobermannmx |
|
| Volver arriba |
|
 |
dobermannmx Master


Registrado: 30 Ago 2006Mensajes: 191Ubicación: Zapopan, Jal. - México
|
Publicado: Vie 18 May, 2007 9:21 pm Asunto: |
|
|
2 cosas, donde llamo las fuinciones del degradado es en el evento OnPaint del TPaintBox, y no sé por que razón se metio un <Rect> en los FOR's
como deben quedar son asi
Este es para el horizontal
for(X = Rect.Left; X < Rect.Right; X++)
y este para el vertical
for(Y = Rect.Top; Y < Rect.Bottom; Y++)
ahora si ya no deben quedar dudas
Salu2 _________________ ISC
Dobermannmx |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|