绘制文本,显示区域无法完全容纳信息问题的处理?分数不够再加

maomaoma 2006-03-22 04:18:42
这是打印预览过程中遇到的问题。
我需要用DrawString在指定范围内填写信息,如果显示不下,翻页显示。
该如何处理这种问题?如何获取已经显示的内容,以及未显示的内容?

这个问题苦恼了好久,本打算用SendMessage来处理,但这个的实现针对窗体控件,DrawString画出的东西应该不是控件吧,获取不到它的句柄。

有没有其他的解决办法?
...全文
145 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
maomaoma 2006-04-06
  • 打赏
  • 举报
回复
问题解决~ 多谢 wuyazhe 给出的提示:),多谢 mzwww 帮我顶贴顶得这么辛苦*^_^*

我是通过MeasureString 算出已经打印的字节数,记录开始打印的位置,,,实现翻页。如果是窗体控件打印也可以用sendmessage实现~
mzwww 2006-04-06
  • 打赏
  • 举报
回复
放了半个多月了还没有解决,csdn上就没有人会了?mm真可怜!
mzwww 2006-04-05
  • 打赏
  • 举报
回复
三花巨顶
mzwww 2006-04-05
  • 打赏
  • 举报
回复
路过,帮你顶
maomaoma 2006-04-05
  • 打赏
  • 举报
回复
试过了。这个方法放到我目前的系统处理机制下,不行啊。。。还有什么好的意见么?
maomaoma 2006-03-27
  • 打赏
  • 举报
回复
我试试:)
mzwww 2006-03-24
  • 打赏
  • 举报
回复
关注中!
兔子-顾问 2006-03-24
  • 打赏
  • 举报
回复
mark
兔子-顾问 2006-03-24
  • 打赏
  • 举报
回复
我这里按上,下,左,右是步进5象素,你可以改成一个屏幕的宽,高,这样就可以实现翻页了。
兔子-顾问 2006-03-24
  • 打赏
  • 举报
回复
Public Class Form1

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Up Then
y -= 5 '假设我们步进单位是5,就是每次移动5象素
ElseIf e.KeyCode = Keys.Down Then
y += 5
ElseIf e.KeyCode = Keys.Left Then
x -= 5
ElseIf e.KeyCode = Keys.Right Then
x += 5
End If
Me.Invalidate()
End Sub
Private bmp As Bitmap
Private x As Integer = 0 '我们的左边界
Private y As Integer = 0 '我们的上边界
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
bmp = New Bitmap(1024, 768)
Dim g As Graphics = Graphics.FromImage(bmp)
Dim str As String = ""
For i As Integer = 0 To 100
For j As Integer = 0 To 100
str += "abcdefg" + vbTab
Next
str += vbCrLf
Next
'生成的字串肯定宽度高度都够了。
g.DrawString(str, New Font("楷体_GB2312", 24), Brushes.Blue, 0, 0)
g.Dispose()
'此时我们在图片上绘制了很多很多文字
End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.DrawImageUnscaled(bmp, x, y)
End Sub
End Class
兔子-顾问 2006-03-24
  • 打赏
  • 举报
回复
诶。算了。给你写一下吧。不过我只有2005。稍等
mzwww 2006-03-24
  • 打赏
  • 举报
回复
路过,帮你顶一下!
maomaoma 2006-03-24
  • 打赏
  • 举报
回复
顶~ 有想法的同志们都说说吧~
mzwww 2006-03-24
  • 打赏
  • 举报
回复
美眉的贴一定顶!
mzwww 2006-03-24
  • 打赏
  • 举报
回复
mm的贴一定要顶!
maomaoma 2006-03-24
  • 打赏
  • 举报
回复
mzwww(mzwww) 谢:)

期待解决方法。。。。。。。。。。。
maomaoma 2006-03-23
  • 打赏
  • 举报
回复
不太明白你说的是什么意思,是可以得到指定显示所有内容的矩形区域,但不能找到指定区域能容纳的文字啊:(
兔子-顾问 2006-03-22
  • 打赏
  • 举报
回复
定义一个足够长的图片。在这个图上绘制你的所有文字,然后绘制图片到窗体上,网上移动就更改绘制这个图片的起点位置。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧