Drawing on a TImage and save [Solved]
Re: Drawing on a TImage and save [Solved]
Uwe,
How do you do to draw lines or free hand, over the image?
Dou you have some examples?
Best regards.
Carlos.
How do you do to draw lines or free hand, over the image?
Dou you have some examples?
Best regards.
Carlos.
Re: Drawing on a TImage and save [Solved]
Carlos,
as soon it will be finished, I will add a DOWNLOAD-link
of the COMPLETE sample.
Best regards
Uwe
as soon it will be finished, I will add a DOWNLOAD-link
of the COMPLETE sample.
Best regards
Uwe
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
i work with FW.
If you have any questions about special functions, maybe i can help.
Re: Drawing on a TImage and save [Solved]
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
Cómo hacer que el tamaño del control se adapte al tamaño de la imagen a mostrar
Conozco la claúsula ADJUST, adapta la imagen al tamaño del control
Tampoco me funciona la claúsula SIZE
Cualquier imagen presentada es situada en un control el doble de tamaño de la imagen
El tamaño de la imagen EAGLE.JPG es 150x100 y el control lo construye de tamaño 300x200
How do you control the size fits the image size to show
I know the ADJUST clause, the image adapts to the size of the control
Nor do I work the SIZE clause
Any displayed image is located in a control double image size
The image size is 150x100 eagle.jpg control is constructed and sized 300x200
Cómo hacer que el tamaño del control se adapte al tamaño de la imagen a mostrar
Conozco la claúsula ADJUST, adapta la imagen al tamaño del control
Tampoco me funciona la claúsula SIZE
Cualquier imagen presentada es situada en un control el doble de tamaño de la imagen
El tamaño de la imagen EAGLE.JPG es 150x100 y el control lo construye de tamaño 300x200
How do you control the size fits the image size to show
I know the ADJUST clause, the image adapts to the size of the control
Nor do I work the SIZE clause
Any displayed image is located in a control double image size
The image size is 150x100 eagle.jpg control is constructed and sized 300x200
Code: Select all
@ 15, 5 IMAGE oImg PIXEL FILE "EAGLE.JPG" OF oDlg //ADJUST
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Drawing on a TImage and save [Solved]
Cristobal,
EMG
You can use something like:cnavarro wrote:Cómo hacer que el tamaño del control se adapte al tamaño de la imagen a mostrar
Code: Select all
oImg:SetSize( oImg:nWidth(), oImg:nHeight() )
Re: Drawing on a TImage and save [Solved]
Enrico, perfecto
Por que no se incluye en la class TImage directamente?
Enrico perfect
What is not included in the TImage class directly?
En la imagen, ahora, me aparece un fino borde blanco.
Enrico between your example and mine is a difference of 4 pixels in size in width and 4 pixel size on High (smaller mine): can be the edge of control?
In the picture, now, me a thin white border appears
Por que no se incluye en la class TImage directamente?
Enrico perfect
What is not included in the TImage class directly?
Enrico, entre tu ejemplo y el mio hay una diferencia de 4 pixels de tamaño en el ancho y 4 pixeles de tamaño en el alto (más pequeño el mio): ¿puede ser el borde del control?Enrico [write]
Thank you. Unfortunately, the image is out of alignment (ie. is slightly shifted)
En la imagen, ahora, me aparece un fino borde blanco.
Enrico between your example and mine is a difference of 4 pixels in size in width and 4 pixel size on High (smaller mine): can be the edge of control?
In the picture, now, me a thin white border appears
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Drawing on a TImage and save [Solved]
Cristobal,
can you show me a little sample of the problem?
EMG
can you show me a little sample of the problem?
EMG
Re: Drawing on a TImage and save [Solved]
Enrico,
pasa lo mismo con tu ejemplo inicial
Si observas, el control tiene un tamaño mayor que la imagen ( fichero .jpg )
En tu ejemplo el fondo del dialog es blanco y no se ve bien el tamaño del control
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
so with your initial example
If you look, the control is larger than the image (file. Jpg)
In your example the bottom of the dialog is white and does not look good size control
https://www.dropbox.com/s/itbqmyk75lha9pa/Eagle.jpg
pasa lo mismo con tu ejemplo inicial
Si observas, el control tiene un tamaño mayor que la imagen ( fichero .jpg )
En tu ejemplo el fondo del dialog es blanco y no se ve bien el tamaño del control
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
so with your initial example
If you look, the control is larger than the image (file. Jpg)
In your example the bottom of the dialog is white and does not look good size control
https://www.dropbox.com/s/itbqmyk75lha9pa/Eagle.jpg
Code: Select all
FUNCTION MAIN()
Local oDlg
Local oImg
Local nOpt
Local oFont
DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -12
DEFINE DIALOG oDlg SIZE 610, 410 ;
COLOR CLR_WHITE, RGB( 51, 51, 51 )// ;
//SIZE 150, 100 PIXEL
@ 15, 5 IMAGE oImg PIXEL FILE "EAGLE.JPG" OF oDlg //ADJUST
@ 168, 5 FLATBTN PROMPT "Draw " SIZE 40, 20 ;
COLOR RGB( 51, 51, 51 ), CLR_WHITE ;
FONT oFont //ACTION ( DrawImg( oImg ) )
@ 168, 55 FLATBTN PROMPT "Save FW" SIZE 40, 20 ;
COLOR RGB( 51, 51, 51 ), CLR_WHITE ;
FONT oFont //ACTION oImg:SaveImage( "IMGENFW.JPG", 2 )
@ 168, 105 FLATBTN PROMPT "Save C" SIZE 40, 20 ;
COLOR RGB( 51, 51, 51 ), CLR_WHITE ;
FONT oFont //ACTION ( nOpt := CaptureImage( oImg:hWnd, "IMAGENC.BMP" ) )
@ 168, 155 FLATBTN PROMPT "Exit" SIZE 40, 20;
COLOR RGB( 51, 51, 51 ), CLR_WHITE ;
FONT oFont ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER //;
//ON INIT ( oImg:SetSize( oImg:nWidth(), oImg:nHeight() ) )
//oFont:End()
RETURN NIL
Last edited by cnavarro on Tue Apr 01, 2014 7:19 pm, edited 1 time in total.
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Drawing on a TImage and save [Solved]
Cristobal,
your sample is not compilable. Please fix it and resend.
EMG
your sample is not compilable. Please fix it and resend.
EMG
Re: Drawing on a TImage and save [Solved]
He modificado el anterior
I modified the previous
O puedes compilar este
Or you can compile this
I modified the previous
O puedes compilar este
Or you can compile this
Code: Select all
#include "Fivewin.ch"
FUNCTION MAIN()
Local oDlg
Local oImg
Local nOpt
Local oFont
//DEFINE FONT oFont NAME "Lucida Console" SIZE 0, -12
DEFINE DIALOG oDlg SIZE 610, 410 ;
COLOR CLR_WHITE, RGB( 51, 51, 51 )// ;
//SIZE 150, 100 PIXEL
@ 15, 5 IMAGE oImg PIXEL FILE "EAGLE.JPG" OF oDlg //ADJUST
@ 168, 5 BUTTON "Draw " SIZE 40, 20 PIXEL
@ 168, 55 BUTTON "Save Fw" SIZE 40, 20 PIXEL
@ 168, 105 BUTTON "Save C " SIZE 40, 20 PIXEL
@ 168, 155 BUTTON "Exit" SIZE 40, 20 PIXEL ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER //;
//ON INIT ( oImg:SetSize( oImg:nWidth(), oImg:nHeight() ) )
//oFont:End()
RETURN NIL
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Drawing on a TImage and save [Solved]
Cristobal,
now I can compile the sample but, sorry, I don't understand what is the problem you are referring to. Can you explain, please?
EMG
now I can compile the sample but, sorry, I don't understand what is the problem you are referring to. Can you explain, please?
EMG
Re: Drawing on a TImage and save [Solved]
Look
Original Image Size: 150 x 100
Tamaño original de la imagen: 150 x 100
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
When you create the control has twice the size of the image containing
I have to do the oImg: SetSize you've told me
Why the size of the control is not adjusted to the size of the image?
Cuando creas el control tiene el doble de tamaño que la imagen que contiene
Tengo que hacer el oImg:SetSize que me has explicado
Por qué no se ajusta el tamaño del control al tamaño de la imagen?
Original Image Size: 150 x 100
Tamaño original de la imagen: 150 x 100
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
When you create the control has twice the size of the image containing
I have to do the oImg: SetSize you've told me
Why the size of the control is not adjusted to the size of the image?
Cuando creas el control tiene el doble de tamaño que la imagen que contiene
Tengo que hacer el oImg:SetSize que me has explicado
Por qué no se ajusta el tamaño del control al tamaño de la imagen?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: Drawing on a TImage and save [Solved]
Cristobal,
saves to a BMP with paintings works :
ACTION oImg:SaveToBmp( cDestFile )
doesn't work painting is not included !!!
ACTION oImg:SaveImage( cDestFile, 2, 25 )
Because of image-resizing, first I save the original image-size.
STATIC FUNCTION GET_IMGSIZE(cWorkfile)
LOCAL oTest
DEFINE IMAGE oTest FILENAME c_path1 + cWorkFile
nImgWidth := oTest:nWidth
nImgHeight := oTest:nHeight
oTest:End()
RETURN NIL
After selecting a resize-factor ( 50 - 130 % ), I use
oDrawImg:Move( 1, 1, nImgWidth * (nResize / 100), nImgHeight * (nResize / 100), .f. )
To display the image, I use :
@ 1, 1 IMAGE oDrawImg FILENAME NIL OF oSDlg ;
SIZE 100, 100 PIXEL BORDER // size will be calculated
oDrawImg:cTooltip := "selected Image"
oDrawImg:bPainted := { |hDC| DRAW_IMAGE( oDrawImg, hDC, cWorkFile ), ;
IIF( nLineStyle = 2, Click( hDC, x, y ), NIL ) } // Freehand painting
I resorted the surface and added a dialog-painter
Best regards
Uwe
saves to a BMP with paintings works :
ACTION oImg:SaveToBmp( cDestFile )
doesn't work painting is not included !!!
ACTION oImg:SaveImage( cDestFile, 2, 25 )
Because of image-resizing, first I save the original image-size.
STATIC FUNCTION GET_IMGSIZE(cWorkfile)
LOCAL oTest
DEFINE IMAGE oTest FILENAME c_path1 + cWorkFile
nImgWidth := oTest:nWidth
nImgHeight := oTest:nHeight
oTest:End()
RETURN NIL
After selecting a resize-factor ( 50 - 130 % ), I use
oDrawImg:Move( 1, 1, nImgWidth * (nResize / 100), nImgHeight * (nResize / 100), .f. )
To display the image, I use :
@ 1, 1 IMAGE oDrawImg FILENAME NIL OF oSDlg ;
SIZE 100, 100 PIXEL BORDER // size will be calculated
oDrawImg:cTooltip := "selected Image"
oDrawImg:bPainted := { |hDC| DRAW_IMAGE( oDrawImg, hDC, cWorkFile ), ;
IIF( nLineStyle = 2, Click( hDC, x, y ), NIL ) } // Freehand painting
I resorted the surface and added a dialog-painter
Best regards
Uwe
Last edited by ukoenig on Wed Apr 02, 2014 11:59 am, edited 4 times in total.
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
i work with FW.
If you have any questions about special functions, maybe i can help.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Drawing on a TImage and save [Solved]
Cristobal,
EMG
Because it's not intended to work such way.cnavarro wrote:Look
Original Image Size: 150 x 100
Tamaño original de la imagen: 150 x 100
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
When you create the control has twice the size of the image containing
I have to do the oImg: SetSize you've told me
Why the size of the control is not adjusted to the size of the image?
Cuando creas el control tiene el doble de tamaño que la imagen que contiene
Tengo que hacer el oImg:SetSize que me has explicado
Por qué no se ajusta el tamaño del control al tamaño de la imagen?
EMG
Re: Drawing on a TImage and save [Solved]
Thank you Uwe.Carlos,
as soon it will be finished, I will add a DOWNLOAD-link
of the COMPLETE sample.
Best regards.
Carlos.
Re: Drawing on a TImage and save [Solved]
Thanks Uwe
El problema es con el tamaño del control TImage que contiene la imagen
Disculpa, si no te he entendido bien. Mi ingles es muy pobre
My problem is not with the size of the image
The problem is with the size of the TImage control that contains the image
Sorry if I misunderstood you well. My English is very poor
Enrico
Esta modificacion hace lo que necesito
Pero, la modificacion tendria que hacerla en la clase TBitmap
Aunque la imagen que obtengo en C es mas pequeña. Voy a comprobar si la diferencia es por la claúsula NOBORDER
This modification does what I need
But the amendment would have to do it in the TBitmap class
Although the image I get in C is smaller. I'll check if the difference is by the clause NOBORDER
https://www.dropbox.com/s/ofepd54kv80q95z/IMAGENC.BMP
https://www.dropbox.com/s/co96szxghn5ia1u/IMGENFW.JPG
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
https://www.dropbox.com/s/srgojq5ordz0ljp/Timage1.png
Mi problema no es con el tamaño de la imagensaves to a BMP with paintings works :
ACTION oImg:SaveToBmp( cDestFile )
doesn't work painting is not included !!!
ACTION oImg:SaveImage( cDestFile, 2, 25 )
El problema es con el tamaño del control TImage que contiene la imagen
Disculpa, si no te he entendido bien. Mi ingles es muy pobre
My problem is not with the size of the image
The problem is with the size of the TImage control that contains the image
Sorry if I misunderstood you well. My English is very poor
Enrico
Enrico Maria Giordano wrote:Cristobal,
Because it's not intended to work such way.
EMG
Esta modificacion hace lo que necesito
Pero, la modificacion tendria que hacerla en la clase TBitmap
Aunque la imagen que obtengo en C es mas pequeña. Voy a comprobar si la diferencia es por la claúsula NOBORDER
This modification does what I need
But the amendment would have to do it in the TBitmap class
Although the image I get in C is smaller. I'll check if the difference is by the clause NOBORDER
https://www.dropbox.com/s/ofepd54kv80q95z/IMAGENC.BMP
https://www.dropbox.com/s/co96szxghn5ia1u/IMGENFW.JPG
https://www.dropbox.com/s/fy1jpxrqc4kkiop/TImage.png
https://www.dropbox.com/s/srgojq5ordz0ljp/Timage1.png
Code: Select all
//-----------------------------------------------------------------------------
#include "Constant.ch"
//----------------------------------------------------------------------------//
#xcommand @ <nRow>, <nCol> IMAGEC [ <oImg> ] ;
[ <resource: NAME, RESNAME, RESOURCE> <cResName> ] ;
[ <file: FILENAME, FILE, DISK> <cBmpFile> ] ;
[ <NoBorder:NOBORDER, NO BORDER> ] ;
[ SIZE <nWidth>, <nHeight> ] ;
[ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
[ <lClick: ON CLICK, ON LEFT CLICK> <uLClick> ] ;
[ <rClick: ON RIGHT CLICK> <uRClick> ] ;
[ <scroll: SCROLL> ] ;
[ <adjust: ADJUST> ] ;
[ CURSOR <oCursor> ] ;
[ <pixel: PIXEL> ] ;
[ MESSAGE <cMsg> ] ;
[ <update: UPDATE> ] ;
[ WHEN <uWhen> ] ;
[ VALID <uValid> ] ;
[ <lDesign: DESIGN> ] ;
=> ;
[ <oImg> := ] TCImage():New( <nRow>, <nCol>, <nWidth>, <nHeight>,;
<cResName>, <cBmpFile>, <.NoBorder.>, <oWnd>,;
[\{ |nRow,nCol,nKeyFlags| <uLClick> \} ],;
[\{ |nRow,nCol,nKeyFlags| <uRClick> \} ], <.scroll.>,;
<.adjust.>, <oCursor>, <cMsg>, <.update.>,;
<{uWhen}>, <.pixel.>, <{uValid}>, <.lDesign.>, [<(oImg)>] )
CLASS TCImage FROM TImage
METHOD New( nTop, nLeft, nWidth, nHeight, cResName, cBmpFile, lNoBorder,;
oWnd, bLClicked, bRClicked, lScroll, lStretch, oCursor,;
cMsg, lUpdate, bWhen, lPixel, bValid, lDesign, cVarName ) CONSTRUCTOR
ENDCLASS
METHOD New( nTop, nLeft, nWidth, nHeight, cResName, cBmpFile, lNoBorder,;
oWnd, bLClicked, bRClicked, lScroll, lStretch, oCursor,;
cMsg, lUpdate, bWhen, lPixel, bValid, lDesign, cVarName ) CLASS TCImage
::Super:New( nTop, nLeft, nWidth, nHeight, cResName, cBmpFile, lNoBorder, ;
oWnd, bLClicked, bRClicked, lScroll, lStretch, oCursor, ;
cMsg, lUpdate, bWhen, lPixel, bValid, lDesign, cVarName )
if ! Empty( cResName ) .or. ! Empty( cBmpFile )
DEFAULT nWidth := Min( ::nWidth(), oWnd:nWidth() ),;
nHeight := Min( ::nHeight(), oWnd:nHeight() )
else
DEFAULT nWidth := 100, nHeight := 100
endif
::nTop := If( lPixel, nTop, nTop * BMP_CHARPIX_H ) // 14
::nLeft := If( lPixel, nLeft, nLeft * BMP_CHARPIX_W) // 8
if Upper( oWnd:ClassName() ) <> "TWINDOW"
::nBottom := ::nTop + Int(nHeight/2) - 1 // Aqui
::nRight := ::nLeft + Int(nWidth/2) - 1 // Aqui
endif
return Self
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.