Excel - getpixel con imagenes en userform

   
Vista:

getpixel con imagenes en userform

Publicado por Ro (2 intervenciones) el 11/03/2009 12:43:25
Buenas,

me trae loco un problema con imagenes. Necesito saber el color de un punto de una imagen que cargo en un campo "Image" de un userform.

me cargo la función Getpixel, pero siempre me devuelve -1. El problema creo que pueden ser dos.

O bien no le consigo meter bien el parametro de la imagen, que actualmente lo cargo con:

Color = GetPixel(Image1.picture, X, Y)

donde Image1 es el nombre del campo Imagen donde cargo el digujo con el tipico loadpicture

o bien mi problema es la escala de la imagen que no consigo poner en pixeles, ya que no me acepta el comando:

Image1.ScaleMode = vbPixels

Si tenéis cualquier sugerencia os la agradecería.

Gracias de antemano y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:getpixel con imagenes en userform

Publicado por Abraham Valencia (2418 intervenciones) el 11/03/2009 16:42:10
Pues sin ver completo tu codigo y otros detalles, es un poco dificil entenderte. De todos modos, lee por auqi:

http://www.recursosvisualbasic.com.ar/htm/listado-api/api-22.htm

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:getpixel con imagenes en userform

Publicado por Ro (2 intervenciones) el 11/03/2009 16:48:47
ya habia visto el url que me indicas, pero lo primero es agradecerte tu ayuda.

Te pongo el codigo a ver si es que soy un zoquete al fin y al cabo y me equivoco en alguna tonteria:

para ayudar a la compresión del código, indicar que en CommandButton1_Click se crea un gráfico a partir de datos de la excel y luego lo exportas a un .gif para luego cargarlo en el picturebox con el loadpicture

Gracias nuevamente

*******************************************
Option Explicit


Private Declare Function GetPixel Lib "gdi32" ( _
ByVal hDC As Long, _
ByVal X As Long, _
ByVal Y As Long) As Long

Private Sub CommandButton1_Click()


Dim sfilename As String

sfilename = ActiveWorkbook.Path & " Ro .gif"



Dim ch As ChartObject
Set ch = Worksheets("Informes Dinamicos").ChartObjects.Add(0, 0, 550, 400)



ch.Chart.ChartType = xl3DColumnClustered

ch.Chart.SetSourceData Source:=Sheets("Resumen_semanas").Range("B13:C15") _
, PlotBy:=xlColumns
ch.Chart.SeriesCollection(1).XValues = "=Resumen_semanas!R13C1:R15C1"
ch.Chart.SeriesCollection(1).Name = "=Resumen_semanas!R2C2"
ch.Chart.SeriesCollection(2).XValues = "=Resumen_semanas!R13C1:R15C1"


ch.Chart.SeriesCollection(2).Name = "=Resumen_semanas!R2C3"
'ActiveChart.Location Where:=xlLocationAsObject, Name:="Image1"

With ch.Chart
.HasTitle = True
.ChartTitle.Characters.Text = "Numero incidencias por semana"
.Axes(xlCategory).HasTitle = True
.Axes(xlCategory).AxisTitle.Characters.Text = "Tiempo"
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = True
.Axes(xlValue).AxisTitle.Characters.Text = "Nº"
End With
With ch.Chart
.HasAxis(xlCategory) = True
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ch.Chart.Axes(xlCategory).CategoryType = xlAutomatic
ch.Chart.HasLegend = True
ch.Chart.Legend.Position = xlLegendPositionBottom

ch.Chart.OLEObjects

ch.Chart.HasDataTable = False

ch.Chart.Export sfilename
Sheets("Informes Dinamicos").ChartObjects(1).Delete

Image1.Picture = LoadPicture(sfilename)

Kill sfilename


End Sub


Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Dim Color As Long

Color = GetPixel(Image1.Picture, X, Y)

Image2.BackColor = color

End Sub
************************************
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:getpixel con imagenes en userform

Publicado por Abraham Valencia (2418 intervenciones) el 11/03/2009 17:50:24
Hola, asi a vista rapida, tu codigo es correcto... para VB, no para VBA :(

como nunca habia tenido la necesidad de usar GetPixel en VBA, no me tenia en la mente que el GDI y el Hdc es diferente. Mira mejor aqui:

http://silkyroad.developpez.com/VBA/ConversionCodesCouleurs/

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar