| |
Visual-Basic Einsteigerfoto druck assistent | | | Autor: Oly | Datum: 29.07.08 23:01 |
| Hallo,
wie sende ich ein Foto oder dokument zum Foto-Druck Assistenten von Windows? | |
Re: foto druck assistent | | | Autor: Dieter (Moderator) | Datum: 30.07.08 08:01 |
| Am einfachsten geht das via ShellExecute-API:
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long ShellExecute 0&, "print", "F:\Eigene Bilder\2008\001.jpg", "", "", 1 _________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de | |
Re: foto druck assistent | | | Autor: Oly | Datum: 30.07.08 11:22 |
| Hallo und danke schonmal!
Wir er denn damit definitiv aufgerufen oder das Programm was zum ausdrucken von jpg unter Windows festgelegt worden ist? | |
Re: foto druck assistent | | | Autor: Oly | Datum: 30.07.08 11:46 |
| kann man das umgehen? Möchte gerne immer den Assistenten aufrufen für diese Funktion, ist das machbar? | |
Re: foto druck assistent | | | Autor: Paulix1 | Datum: 10.12.12 17:42 |
| Hallo,
hab mir das angesehen. Bei W7 startet der Foto Druck Assistent, bei XP die Fax und Foto Anzeige.
Ich suche eine Lösung, mit der ich jpg Fotos ohne weiteres Programm wie oben genannt auf A4 Format ausdrucken kann.
Alternativ ist der Foto Druck Assistent geeignet. Wie kann ich den auf XP nachinstallieren?
Prüfen ob er vorhanden ist?
Kann ich den Assistenten im Hintergrund laufen lassen?
Welche Möglichkeiten bestehen noch, um Fotos auf A4 aus einem VB6 Programm ohne weiteres Programm oder Bedienoberfläche zu drucken?
Paulix | |
Re: foto druck assistent | | | Autor: Zardoz | Datum: 10.12.12 20:12 |
| Hallo Paulix,
das geht mit dem Printer-Objekt. Bild mit PaintPicture ins
Printer-Objekt zeichnen und mit Printer.EndDoc drucken.
Gruss,
Zardoz | |
Re: foto druck assistent | | | Autor: Paulix1 | Datum: 11.12.12 12:34 |
| Hallo Zardoz,
das habe ich bisher auch so gemacht.
Dabei gabs aber zwei Mängel:
Große Bilddatein, >3MB, wurden nicht gedruckt.
Bei Bilder in unterschiedlichen Formaten, Hoch oder Breit waren Verzerrungen auf dem gedruckten Bild.
Der Kreis ist nicht mehr rund sondern oval.
Deshalb suche ich nach einer anderen Methode.
MfG
Paulix | |
Re: foto druck assistent | | | Autor: Zardoz | Datum: 11.12.12 13:38 |
| Hallo Paulix,
probier' mal dies:
Dim Dat1$, TmpPic As StdPicture, Fkt1!, Fkt2!
Dim QuellBreite!, QuellHoehe!, ZielBreite!, ZielHoehe!
Dat1 = "C:\EinBild.jpg" ' Pfad eines Bildes
If Dir$(Dat1) = "" Then
MsgBox "Datei nicht gefunden:" & vbCr & Dat1, vbExclamation + vbOKOnly
Exit Sub
End If
Me.MousePointer = vbHourglass
Set TmpPic = LoadPicture(Dat1)
QuellBreite = Int(0.5 + Me.ScaleX(TmpPic.Width, vbHimetric, vbPixels))
QuellHoehe = Int(0.5 + Me.ScaleY(TmpPic.Height, vbHimetric, vbPixels))
With Printer
If QuellBreite > QuellHoehe Then
.Orientation = vbPRORLandscape
Else
.Orientation = vbPRORPortrait
End If
.ScaleMode = vbPixels
Fkt1 = .ScaleWidth / QuellBreite
Fkt2 = .ScaleHeight / QuellHoehe
If Fkt2 < Fkt1 Then Fkt1 = Fkt2
ZielBreite = QuellBreite * Fkt1
ZielHoehe = QuellHoehe * Fkt1
.PaintPicture TmpPic, (.ScaleWidth - ZielBreite) / 2, _
(.ScaleHeight - ZielHoehe) / 2, ZielBreite, ZielHoehe
.EndDoc
End With
Set TmpPic = LoadPicture()
Me.MousePointer = vbDefault Es sollte auch mit grösseren Dateien funktionieren. Wenn es
dabei Probleme gibt, kann man sie verkleinern.
Gruss,
Zardoz | |
Re: foto druck assistent | | | Autor: Paulix1 | Datum: 18.12.12 16:42 |
| Hallo Zardoz,
Danke für den Code. Funktioniert bestens.
Kannst Du mir auch noch mit einer Variante / Ergänzung mit der Verkleinerung der Datei helfen.
Bilder mit 3MB Dateigröße werden nicht gedruckt. Ich könnte mir vorstellen , Bilder ab 1,5 MB zu verkleineren.
Ich bin neu im Fach Bildbearbeitung, mach sonst nur in Richtung Datenbank. Deshalb diese Anfängerfragen.
HG
Paulix | |
Re: foto druck assistent | | | Autor: Zardoz | Datum: 26.12.12 21:14 |
| Hallo Paulix,
hier mal der erste Teil:
Private Const COLORONCOLOR = 3
Private Const HALFTONE = 4
Public Sub PrintPicture(Path As String)
Dim TmpPic As StdPicture, Fkt1#, Fkt2#
Dim QuellBreite&, QuellHoehe&, ZielBreite&, ZielHoehe&
Dim P1hdc&, P1OldHandle&, SW1&, SH1&
Dim P2hdc&, P2OldHandle&, OldMode&
If Dir$(Path) = "" Then
MsgBox "Datei nicht gefunden:" & vbCr & Path, vbExclamation + vbOKOnly
Exit Sub
End If
Screen.MousePointer = vbHourglass
DoEvents
Set TmpPic = LoadPicture(Path)
QuellBreite = Int(0.5 + Me.ScaleX(TmpPic.Width, vbHimetric, vbPixels))
QuellHoehe = Int(0.5 + Me.ScaleY(TmpPic.Height, vbHimetric, vbPixels))
P2hdc = CreateCompatibleDC(0)
P2OldHandle = SelectObject(P2hdc, TmpPic.Handle)
SW1 = 2000
SH1 = 2000
Fkt1 = SW1 / QuellBreite
Fkt2 = SH1 / QuellHoehe
If Fkt2 < Fkt1 Then Fkt1 = Fkt2
If Fkt1 > 1 Then Fkt1 = 1
SW1 = QuellBreite * Fkt1
SH1 = QuellHoehe * Fkt1
P1hdc = CreateCompatibleDC(0)
P1OldHandle = SelectObject(P1hdc, _
CreateCompatibleBitmap(Me.hdc, SW1, SH1))
OldMode = SetStretchBltMode(P1hdc, HALFTONE)
Call StretchBlt(P1hdc, 0, 0, SW1, SH1, _
P2hdc, 0, 0, QuellBreite, QuellHoehe, vbSrcCopy)
Call SetStretchBltMode(P1hdc, OldMode)
Call SelectObject(P2hdc, P2OldHandle)
Set TmpPic = LoadPicture()
Call DeleteDC(P2hdc)
With Printer
If SW1 > SH1 Then
.Orientation = vbPRORLandscape
Else
.Orientation = vbPRORPortrait
End If
.ScaleMode = vbPixels
Printer.Print " "
Fkt1 = .ScaleWidth / SW1
Fkt2 = .ScaleHeight / SH1
If Fkt2 < Fkt1 Then Fkt1 = Fkt2
ZielBreite = SW1 * Fkt1
ZielHoehe = SH1 * Fkt1
OldMode = SetStretchBltMode(.hdc, COLORONCOLOR)
Call StretchBlt(.hdc, (.ScaleWidth - ZielBreite) / 2, _
(.ScaleHeight - ZielHoehe) / 2, ZielBreite, ZielHoehe, _
P1hdc, 0, 0, SW1, SH1, vbSrcCopy)
Call SetStretchBltMode(.hdc, OldMode)
.EndDoc
End With
Call DeleteObject(SelectObject(P1hdc, P1OldHandle))
Call DeleteDC(P1hdc)
Screen.MousePointer = vbDefault
End Sub Wie gross sind denn deine Bilder in Pixeln?
Gruss,
Zardoz | |
Re: foto druck assistent | | | Autor: Paulix1 | Datum: 27.12.12 12:38 |
| Hallo Zardoz,
die Bilder sind bei Dateigröße von 3,6 MB 3648 Pix breit und 2736 Pix hoch Tiefe 24 oder
1,08 Mb 2560 Pix breit und 1920 Pix hoch , Tiefe 24.
das große Bild wird nicht gedruckt.
HG
Paulix | |
Re: foto druck assistent | | | Autor: Zardoz | Datum: 27.12.12 17:58 |
| Hallo Paulix,
3,6 MB sind für ein Bild dieser Grösse ungewöhnlich. Die Dateigrösse
ist bei dieser Auflösung im Schnitt kleiner. Kannst du das Bild denn
mit anderen Anwendungen laden und anzeigen. Eventuell ist die Datei
beschädigt. Ich habe die erste Version (die, mit PaintPicture) zum
Drucken von Bildern mit 6000 × 6000 Pixeln getestet. Funktioniert
bei mir einwandfrei. Vielleicht hast du die Möglichkeit den Ausdruck
auf einem anderen PC, oder mit einem anderen Drucker zu testen. Bei
der angegebenen Bildgrösse sollte es noch keine Probleme geben, ausser
es wären gleichzeitig noch weitere, grössere Bilder geladen.
Gruss,
Zardoz | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|