Página 1 de 1

Imprimir imagem de lado

Enviado: 22 Abr 2015 17:50
por HASA
:-O
Boa tarde, Srs. será que tem como imprimir uma imagem ora para o lado direito ora para o lado esquerdo ? Veja não é no lado diretio e esquerdo é a imagem virada ( rotacionar 90 G ), ok.

HASA - Minigui Extenmd - HBprint ( WinPrint )

Imprimir imagem de lado

Enviado: 22 Abr 2015 18:09
por Toledo
Amigo, com a HBPrinter para imprimir uma imagem você pode escolher a linha e coluna onde a imagem será impressa, então basta você definir uma variável (por exemplo: lLado:=.T.) para controlar a posição de impressão da imagem.

Código: Selecionar todos

IF lLado
  @20,24 PICTURE "IMAGEM.JPG" size 15,30
  lLado:=.F.
ELSE
  @20,250 PICTURE "IMAGEM.JPG" size 15,30
  lLado:=.T.
ENDIF
Abraços,

Imprimir imagem de lado

Enviado: 23 Abr 2015 09:26
por HASA
:(
Bom dia, Toledo, não deu veja:

Imprimir imagem de lado

Enviado: 23 Abr 2015 10:21
por Toledo
Hasa, faça um teste com este código:

Código: Selecionar todos

#include "minigui.ch"
#include "winprint.ch"

Procedure main()

	DEFINE WINDOW Form_1 ;
                AT 0,0 ;
                WIDTH 400 HEIGHT 200 ;
                TITLE 'Exemplo HBPrinter' ;
                MAIN

                @5 ,10 BUTTON Button_1 CAPTION '&Imprimir' ACTION Imprimir()

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return

Proc Imprimir()
INIT PRINTSYS
SELECT BY DIALOG
SET PAPERSIZE DMPAPER_A4
SET ORIENTATION PORTRAIT
SET UNITS MM
SELECT DEFAULT PREVIEW 
SET PREVIEW SCALE 1.8

define font "times14" name "times new roman" size 14

START DOC

  START PAGE
    //imagem lado esquerdo @ 20,24
    // texto lado direito @ 20,70
    @20,24 PICTURE "demo.jpg" size 40,40
    @20,70 SAY '@ 20,24 PICTURE "demo.jpg" size 40,40' FONT "times14" TO PRINT

    //imagem lado direito @ 80,130
    // texto lado esquerdo @ 80,40
    @80,130 PICTURE "demo.jpg" size 40,40
    @80,40 SAY '@ 80,130 PICTURE "demo.jpg" size 40,40' FONT "times14" TO PRINT
  END PAGE

END DOC

RELEASE PRINTSYS

Return
Note que mudei a linha e coluna, tanto da imagem como do texto.

Abraços,

Imprimir imagem de lado

Enviado: 23 Abr 2015 10:55
por HASA
:-$
Toledo não me refiro a direita esquerda e sim rotacionar a imagem propriamente dita:

HASA

Imprimir imagem de lado

Enviado: 23 Abr 2015 12:04
por Toledo
HASA escreveu:imagem virada ( rotacionar 90 G )
Hasa, você editou sua mensagem inicial? O texto acima já estava na mensagem? Não sei se estou ficando velho/cego, mas não me lembro de ter lido isto!

Bom, me desculpe pela minha má interpretação... mas só com a HBPrinter não tem como fazer isto, a função da HBPrinter (para imprimir imagem) não tem parâmetro para rotacionar a imagem. No caso de texto tem como rotacionar, mas imagem não.

Acho que seria mais fácil já criar vários arquivos com a imagem em diversas posições.

Abraços,

Imprimir imagem de lado

Enviado: 23 Abr 2015 15:04
por HASA
:-O :'(

Toledo, editei sim mas no primeiro meio minuto, pois não tinha colocado a parte do rotacionar 90 graus, acho que postei e você leu, achei até que você tinha lido já editado pois você postou 18 minutos depois que editei. Mil desculpas não comentei sobre a edição por esse motivo foi meio minuto mesmo postei e editei no mesmo segundo ok.
:{ obrigado pelas informações,
:)Pos
HASA

Imprimir imagem de lado

Enviado: 23 Abr 2015 17:56
por HASA
:(Neg
Toledo, até achei um sample que rotaciona imagem mas... ela precisa estar na tela para depois poder imprimir, eu queria girar a imagem na ora da impressão mesmo, não deu.
C:\MiniGUI\SAMPLES\Advanced\FREEVIEW
:%
HASA

Imprimir imagem de lado

Enviado: 23 Abr 2015 20:42
por Toledo
Hasa, como lhe disse, a HBPrinter não tem opção para rotacionar imagem, então temos que utilizar uma outra função para fazer isto e depois usar a HBPrinter para imprimir a imagem já pronta.
Uma alternativa seria a lib BosTaurus, veja um exemplo:

Código: Selecionar todos

***********************************
* Compilar: incluir a lib BosTaurus
***********************************
#include "minigui.ch"
#include "winprint.ch"
#include "BosTaurus.CH"

Procedure main()
Private hBitmap  :=0
Private hBitmapD :=0
Private hBitmapE :=0

	DEFINE WINDOW Form_1 ;
                AT 0,0 ;
                WIDTH 400 HEIGHT 200 ;
                TITLE 'Exemplo HBPrinter/BosTaurus' ;
                MAIN

                @5 ,10 BUTTON Button_1 CAPTION '&Imprimir' ACTION Imprimir()

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return

Proc Imprimir()
//Lendo o arquivo JPG para a memória
hBitmap := BT_BitmapLoadFile ("demo.jpg")

//Rotacionando a imagem 90 graus
hBitmapD := BT_BitmapTransform (hBitmap, BT_BITMAP_ROTATE, 90, NIL)
//Rotacionando a imagem 270 graus
hBitmapE := BT_BitmapTransform (hBitmap, BT_BITMAP_ROTATE, 270, NIL)

//Salvando a imagem para um arquivo
Ret:= BT_BitmapSaveFile (hBitmapD, "ladoDir.jpg", BT_FILEFORMAT_JPG)
Ret:= BT_BitmapSaveFile (hBitmapE, "ladoEsq.jpg", BT_FILEFORMAT_JPG)

//apagando a imagem da memoria
BT_BitmapRelease (hBitmap)
BT_BitmapRelease (hBitmapD)
BT_BitmapRelease (hBitmapE)

INIT PRINTSYS
SELECT BY DIALOG
SET PAPERSIZE DMPAPER_A4
SET ORIENTATION PORTRAIT
SET UNITS MM
SELECT DEFAULT PREVIEW 
SET PREVIEW SCALE 1.8

START DOC

  START PAGE
    @20,24 PICTURE "ladoDir.jpg" size 40,40

    @20,130 PICTURE "ladoEsq.jpg" size 40,40
  END PAGE

END DOC

RELEASE PRINTSYS

Return
Observe que estou usando a função BT_BitmapLoadFile() para ler a imagem original e com a função BT_BitmapTransform() estou rotacionando a imagem e depois salvo a imagem em um arquivo, para isto estou usando a função BT_BitmapSaveFile().
Então, depois de executar este demo, na pasta do programa, além do arquivo original, você vai encontrar também os outros dois arquivos que foram salvos (ladoDir.jpg e ladoEsq.jpg)

Abraços,

Imprimir imagem de lado

Enviado: 24 Abr 2015 09:20
por HASA
:)) :|< :-Y

- Toledo, exatamente isso, nunca lembro dessa lib ela tem muito coisa boa no gerenciamento de imagem, vou adequar o exemplo a minha necessidade, talvez fosse interessante você disponibilizar na parte de downloads ficou excelente.
:)Pos
HASA