| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3455 人关注过本帖, 3 人收藏
标题:怎样用VFP生成BMP图形文件
只看楼主 加入收藏
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
结帖率:99.55%
收藏(3)
已结贴  问题点数:100 回复次数:18 
怎样用VFP生成BMP图形文件
因为要在程序中添加打印条码功能,试用了多个打印条码的DLL或VFP程序,不是打印出来的分辨率太低,就是程序功能齐全、程序太大不便于打包发布。我现在想自己根据需要做一个生成条码图片的程序,目前条码的编码计算问题已经解决,下一步就是根据计算出来由0和1组成的字符串来绘制BMP图片。但我还不知道在VFP下如何绘制和生成BMP图片,希望大家能给个思路或提供一个范例。
搜索更多相关主题的帖子: 下一步 分辨率 图片 字符串 
2011-07-04 09:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:100 
用GDI+庫

授人以渔,不授人以鱼。
2011-07-04 09:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果你有GDI+庫的資料,就知道怎麽做了,VFP 9.0的圖形處理都是調這個庫的,所以它本身配有_GDIPLUS.VCX類庫,直接使用即可。在張洪舉的書中有介紹,最好自己找來看一看。必要時,可以給你做一個示範程序。

授人以渔,不授人以鱼。
2011-07-04 13:47
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
首先表示感谢!
我现在就是缺少GDI+库的资料,不清楚如何建立和保存一个图片文件、如何调画线段、如何在特定的位置添加文字。您如果方便的话,能否提供相应资料的电子文档就好了,若能帮我做个示例就更感谢不尽!

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-07-04 20:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你先看看是否想要這種效果?

程序代码:
*----------------------------
* 使用 GDI+ 庫繪圖範例
* 打開 VCX 文件可以查看類庫源代碼
*----------------------------

*----------------------------
* VFP 9.0(SP2) 自帶GDI+類庫
* 文件名:_GDIplus.vcx, _GDIplus.vct (若使用頭文件,有 GDIplus.h, GDIplus_locs.h)
* 路徑:VFP 安裝目錄下 FFC 文件夾
*----------------------------
SET PATH TO HOME() + "FFC"
_Bitmap = NEWOBJECT("gpBitmap", "_GDIplus.vcx")                && 建立繪圖板對象,圖形將在此畫板上繪製
WITH _Bitmap
    .Create(128,128)                                        && 設定畫板大小,寬度和高度
    .SetResolution(300,300)                                    && 設定分辨率(x,y 的 DPI 値)
ENDWITH 
_Color = NEWOBJECT("gpColor", "_GDIplus.vcx")                && 建立顔色對象
_Pen = NEWOBJECT("gpPen", "_GDIplus.vcx")                    && 建立畫筆對象
_Font = NEWOBJECT("gpFont", "_GDIplus.vcx")                    && 建立字體對象
_StringFormat = NEWOBJECT("gpStringFormat", "_GDIplus.vcx")
_TextBrush = NEWOBJECT("gpSolidBrush", "_GDIplus.vcx")
_Point = NEWOBJECT("gpPoint", "_GDIplus.vcx")
_Graphics = NEWOBJECT("gpGraphics", "_GDIplus.vcx")            && 建立圖形對象
WITH _Graphics
    .CreateFromImage(_Bitmap)                                && 指定圖形對象的設備,此處指向已建立的_Bitmap對象
    _Color.Set(255,255,255)                                    && 設定顔色,三個參數分別是紅、緑、藍値,即RGB各自獨立
    .Clear(_Color)                                            && 用設定的顔色填充整個圖形,可用於背景顔色
    _Color.Set(0,0,0)                                        && 改變顔色
    _Pen.Create(_Color, 10)                                    && 將指定的顔色賦予畫筆,請查看類庫中gpPen對象Create方法的參數,此處10是筆寬
    .DrawLine(_Pen, 20, 20, 108, 20)                        && 用設定的畫筆畫圖,類庫中有很豐富強大的畫圖函數
    .DrawLine(_Pen, 20, 50, 108, 50)
    _Color.Set(0,255,0)
    _Font.Create("Arial", 10, 0, 3)                            && 設置文本字體
    _TextBrush.Create(_Color)                                && 設定文本顔色
    _Point.Create(10, 80)                                    && 設定文本左上角位置
    .DrawStringA("Test", _Font, _Point, _StringFormat, _TextBrush)
ENDWITH 
_Bitmap.SaveToFile("Test.BMP", "image/bmp")                    && 將繪圖板保存爲文件,此處指定文件格式爲.BMP
RELEASE ALL 
RETURN 



[ 本帖最后由 TonyDeng 于 2011-7-5 03:06 编辑 ]

授人以渔,不授人以鱼。
2011-07-05 02:01
David_526
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-8
收藏
得分:0 
不论程序能不能执行,TonyDeng的钻研与分享知识的精神,值得我等各位狐友的学习!
2011-07-05 07:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不能運行的程序我貼出來幹嘛?
如何包含.VCX類庫,不用我教樓主的。

授人以渔,不授人以鱼。
2011-07-05 11:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果你不用Project項目,在SET PATH後加一行:

SET CLASSLIB TO _GDIplus

授人以渔,不授人以鱼。
2011-07-05 11:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
注意:VFP封裝的_GDIplus類庫有330K,將囊括在你的應用程序之中,必須同時發布(編譯爲.EXE文件也會包含進去,即起碼在400K以上)。GDIPlus.DLL運行庫有1.7M,在Windows\system32中,這個文件也是必須存在的。

用.DLL是最簡單的辦法,但只用了其中極少的功能,佔用了不少空間,這樣性價比不大划算。如果你追求完美,可以自己生成BMP格式的文件(在百度上就能搜到BMP文件格式數據結構,是最簡單的圖形格式)。不過,如果想支持更多的圖形格式,比如JPG、PNG、GIF之類,還是用GDIplus.DLL好了。

[ 本帖最后由 TonyDeng 于 2011-7-5 11:38 编辑 ]

授人以渔,不授人以鱼。
2011-07-05 11:30
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
谢谢楼主热心相助,我先下载试试。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-07-05 12:29
快速回复:怎样用VFP生成BMP图形文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018903 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved