Hi all,
I have been having so much trouble with printing a simple image on a sheet of paper in a specific location, my hair is falling out. I searched here and found that many were having printing issues as well. I tried many of the solutions and still continued to have problems. Then I fell upon an awsome discovery. Here was my problem.
(VB 6.0)
1. The page size that i needed to use was 9.5" X 7.125" which as you can see is a custom size
2. I needed to print 2 images in a specific location landscape.
3. It was no problem setting my printer to handle the custom size and it appeared to be simple.
4. I made a form the same size as my printer.object width,height,scalewidth,scaleheight and made sure that it was the same scalemode.
5. I put 2 picture boxes on the form. positioned them and removed the border and called the form.printform method.
6. It worked great but i had forgotten to make the form a white background.
7. When I made the form1.background white, and printed it (printform) the pictures moved all the way to the left side of the page. No matter what x,y coords i gave it, it continued to print far left. When I made the form.back grey again, it worked fine. I fought with this for a couple days and came up with no solution.
Today i discovered the solution by accident. Instead of using the picture control, I tried the image control and it worked great even with the form.back white. The only reason I can figure is that, as you probably know the image control has no Hdc property where the Picture control does.
So if you are having problems printing a picture on a form in a specific location, try loading the image into an image control, placing it on the form using the move method, removing the border and then printing using the printform method
Here is some code i use for moving the image around on the screen with the arrow keys before i call printform
Code:
INC = CLng(chng)
Select Case KeyCode
Case 37
X1 = CInt(X1) - INC: DoEvents
prntfrm.Cls
DoEvents
pic.Move X1, Y1
Case 40
Y1 = CInt(Y1) + INC: DoEvents
prntfrm.Cls
DoEvents
pic.Move X1, Y1
Case 38
Y1 = CInt(Y1) - INC: DoEvents
prntfrm.Cls
DoEvents
pic.Move X1, Y1
Case 39
X1 = CInt(X1) + INC: DoEvents
prntfrm.Cls
DoEvents
pic.Move X1, Y1
End Select
I then save the coords in the win registry so that they are there the next time the program runs without re-designating them.
Code:SaveSetting "PhotoProcessor", "Coords", "pic1x", X1.Text
SaveSetting "PhotoProcessor", "Coords", "pic1y", Y1.Text
SaveSetting "PhotoProcessor", "Coords", "pic2x", X2.Text
SaveSetting "PhotoProcessor", "Coords", "pic2y", Y2.Text
I hope this help someone..
Ira
iwhitney@iwdata.com
printing images,printer,printform
Edited by user 17 years ago
| Reason: Not specified