Imprimir imagem de lado

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Imprimir imagem de lado

Mensagem 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 )
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Imprimir imagem de lado

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Imprimir imagem de lado

Mensagem por HASA »

:(
Bom dia, Toledo, não deu veja:
Anexos
imagem.JPG
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Imprimir imagem de lado

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Imprimir imagem de lado

Mensagem por HASA »

:-$
Toledo não me refiro a direita esquerda e sim rotacionar a imagem propriamente dita:

HASA
Anexos
imagem.JPG
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Imprimir imagem de lado

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Imprimir imagem de lado

Mensagem 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
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Imprimir imagem de lado

Mensagem 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
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Imprimir imagem de lado

Mensagem 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,
Anexos
hbprinter.zip
(710.19 KiB) Baixado 153 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Imprimir imagem de lado

Mensagem 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
Responder