? vfp怎樣生成二維碼的開源代碼
環境:Visual Studio 2013
準備工作:引入一個dll——ThoughtWorks.QRCode
dll作用:封裝成熟的二維碼算法等(有包不用自己寫的,我覺得都是大仙)
引入dll方法:
(1)打開“程序包管理控制臺”(視圖——其他窗口——程序包管理控制臺)
(2)Install-Package -ProjectName 你的項目名稱 ThoughtWorks.QRCode
(3)等待等待等待等待。。。。。。。然后裝完。
生成二維碼的核心代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//mapPath:網站根目錄
//fileSaveFolder:相對路徑
//link:鏈接或者文本
public static string
GenerateLinkQRCode
(string mapPath, string fileSaveFolder, string link)
{
QRCodeEncoder qr = new QRCodeEncoder()
{
//編碼
QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE,
//二維碼縮放
QRCodeScale = 4,
//數字越小,二維碼密度越小,
//可容納的文本越少
QRCodeVersion = 4,
//
QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M
};
//存放路徑處理
if (!Directory.Exists(mapPath + fileSaveFolder))
{
Directory.CreateDirectory(mapPath + fileSaveFolder);
}
//給二維碼圖片取名字
//規則可任意修改
string fileName = "QRCode" +
DateTime.Now.ToString("yyyyMMddHHmmss") +
隨機字符串 +
".png";
//存放二維碼的絕對路徑
string filePath = mapPath + fileSaveFolder + fileName;
//生成二維碼圖片放在內存中
Bitmap bitmap = qr.Encode(link);
//保存圖片到服務器磁盤(本地保存)
Bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
//準備返回二維碼圖片相對路徑
string result = fileSaveFolder + fileName;
result = "/" + result.Replace(@"\", "/");
//輸出結果,就是二維碼的路徑
return result;
}
本回答由提問者推薦評論 0 0
J_oin
采納率:42% 擅長: JavaScript C#/.NET 編程語言 Html/Css
其他回答
新建一個window應用程序,然后引入.NET二維碼類庫(開源的類庫,可從網上下載):
核心代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WinQRCode
{
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;
using System.IO;
using PdfToImage;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 編碼
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (this.textBox1.Text != "")
{
Cursor.Current = Cursors.WaitCursor;
if (textBox1.Text.Trim() == String.Empty)
{
MessageBox.Show("不能為空.");
return;
}
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 4;
qrCodeEncoder.QRCodeVersion = 7;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
System.Drawing.Image image;
String data = textBox1.Text;
//編碼
image = qrCodeEncoder.Encode(data);
//圖片顯示
this.pictureBox1.Image = image;
Cursor.Current = Cursors.Default;
}
}
/// <summary>
/// 解碼
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
Bitmap b = this.pictureBox1.Image as Bitmap;
try
{
QRCodeDecoder decoder = new QRCodeDecoder();
//解碼
String decodedString = decoder.decode(new QRCodeBitmapImage(b));
//顯示解碼信息
this.lbl解碼信息.Text += decodedString ;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Cursor.Current = Cursors.Default;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
? vfp高手進(如何動態生成報表問題)
一個簡易動態報表函數
*作者:sj_sh
*功能:根據當前工作區的表生成報表文件
*調用方法:DYNAMICREPORT([[<報表文件名>],[<報表標題>]])
*使用舉例:
*USE MYTABLE
*DYNAMICREPORT('MYREPORT','我的動態報表')
*REPO FORM MYREPORT ......
*或:
*SELE ...... FROM MYTABLE INTO CURS TMP
*DYNAMICREPORT(,'我的動態報表')
*REPO FORM TMP_REPORT ......
PARAMETERS 報表文件名,報表標題 &&報表文件名不帶擴展名,可缺省(缺省文件名為TMP_REPORT),報表標題可缺省
PRIVATE ALL LIKE L_*
WAIT '正在生成報表......' WINDOW NOWAIT NOCLEAR
IF TYPE('M.報表文件名')='L' OR EMPTY(M.報表文件名)
報表文件名='TMP_REPORT'
ENDIF
L_字符寬度9=625 &&FONTSIZE=9
L_字符寬度9粗=729.167 &&FONTSIZE=9,粗體
L_字符寬度16=1250 &&FONTSIZE=16(半角字符寬度為1250,半個全角字符寬度為1145.833,故由此算得標題居中位置并不準確)
L_域控件寬度修正9=370 &&由“L_字符寬度9”算得域控件寬度需加上此數值,才能完整輸出
L_帶區指示條高度=2083
L_標題區高度=IIF(TYPE('M.報表標題')='L' OR EMPTY(報表標題),0,5000)
L_頁標頭區高度=2400
L_細節區高度=2400
L_頁標頭區VPOS=L_標題區高度+IIF(L_標題區高度=0,0,L_帶區指示條高度)
L_細節區VPOS=L_標題區高度+L_頁標頭區高度+IIF(L_標題區高度=0,1,2)*L_帶區指示條高度
L_TMP=SYS(2015)
L_CA=SELECT()
COPY STRUCTURE TO (L_TMP) EXTE
CREATE CURSOR TMP (TMPFIELD C(1))
CREATE REPORT (報表文件名) FROM TMP
USE 報表文件名+'.FRX' EXCL
IF L_標題區高度#0
*添加標題區
INSERT BLAN
REPLACE PLATFORM WITH 'WINDOWS',OBJTYPE WITH 9,HEIGHT WITH L_標題區高度
ENDIF
LOCATE FOR EXPR='_PAGENO'
L_頁面寬度=HPOS+WIDTH
*增高頁標頭區
LOCATE FOR OBJTYPE=9 AND OBJCODE=1
L_頁標頭區原高度=HEIGHT
L_頁標頭區增高=L_頁標頭區高度-HEIGHT
REPLACE HEIGHT WITH L_頁標頭區高度
*增高細節區
LOCATE FOR OBJTYPE=9 AND OBJCODE=4
L_細節區原高度=HEIGHT
L_細節區增高=L_細節區高度-HEIGHT
REPLACE HEIGHT WITH L_細節區高度
*標題區以下內容重定位
LOCATE FOR OBJTYPE=5
L_列標題高度=HEIGHT
*修改頁注腳區內容垂直位置
REPLACE VPOS WITH L_細節區VPOS+L_細節區高度+L_帶區指示條高度;
FOR VPOS>L_頁標頭區原高度+L_帶區指示條高度+L_細節區原高度 AND INLIST(OBJTYPE,5,8)
*修改細節區內容垂直位置
REPLACE VPOS WITH L_細節區VPOS+L_細節區增高/2;
FOR BETWEEN(VPOS,L_頁標頭區原高度,L_頁標頭區原高度+L_帶區指示條高度+L_細節區原高度)
*修改頁標頭區內容垂直位置
REPLACE VPOS WITH L_頁標頭區VPOS+L_頁標頭區增高/2;
FOR VPOS<L_頁標頭區原高度 AND !INLIST(OBJTYPE,1,9)
*修改頁注腳內容
CALCULATE MAX(HPOS) TO L_MAX FOR OBJTYPE=5 AND TOP
LOCATE FOR HPOS=L_MAX
SCATTER MEMV MEMO
REPLACE EXPR WITH ["第"],HPOS WITH L_頁面寬度-10*L_字符寬度9,WIDTH WITH 2*L_字符寬度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["頁"],HPOS WITH L_頁面寬度-2*L_字符寬度9,WIDTH WITH 2*L_字符寬度9
LOCATE FOR EXPR=[_PAGENO] AND TOP
REPLACE HPOS WITH L_頁面寬度-8*L_字符寬度9,WIDTH WITH 5*L_字符寬度9
LOCATE FOR EXPR=[DATE()] AND TOP
REPLACE HPOS WITH HPOS+11*L_字符寬度9
APPEND BLANK
GATHER MEMV MEMO
REPLACE EXPR WITH ["打印日期:"],HPOS WITH 0,WIDTH WITH 10*L_字符寬度9
*添加列標題標簽控件、細節區域控件以及表格線
*先保存報表中基于TMPFIELD字段的標簽控件和域控件記錄,作為生成各列的標題標簽控件和細節域控件的依據
LOCATE FOR UPPER(EXPR)=["TMPFIELD"]
SCATTER TO L_列標題記錄 MEMO
DELETE
LOCATE FOR UPPER(EXPR)=[TMPFIELD]
SCATTER TO L_列細節記錄 MEMO
DELETE
PACK
SELECT 0
USE (L_TMP)
L_報表寬度=0
L_HPOS=0
L_GAP=400 &&列與縱線之間的間隙
*設置縱線屬性
OBJTYPE=6
EXPR=''
WIDTH=104.167
HEIGHT=L_細節區高度
PENSIZE=1
PENPAT=8
MODE=0
SCAN FOR FIELD_TYPE#'G' &&通用字段除外
L_列標題=TRIM(FIELD_NAME)
L_列標題寬=LEN(L_列標題)*L_字符寬度9粗
L_列細節寬=FIELD_LEN*L_字符寬度9+L_域控件寬度修正9
L_列寬=MAX(L_列標題寬,L_列細節寬)
L_報表寬度=L_報表寬度+WIDTH+2*L_GAP+L_列寬
L_類型=FIELD_TYPE
IF L_報表寬度>L_頁面寬度
EXIT
ENDIF
SELECT (報表文件名)
添加縱線()
L_HPOS=L_HPOS+WIDTH+L_GAP
*添加列標題
APPEND BLANK
GATHER FROM L_列標題記錄 MEMO
REPLACE EXPR WITH ["]+L_列標題+["],HPOS WITH L_HPOS,WIDTH WITH L_列標題寬
*添加列細節
APPEND BLANK
GATHER FROM L_列細節記錄 MEMO
REPLACE EXPR WITH L_列標題,HPOS WITH L_HPOS,WIDTH WITH L_列細節寬,FILLCHAR WITH CHRTRAN(L_類型,'YFTBIM','NNDNNC')
IF FILLCHAR='N'
REPLACE OFFSET WITH 1
ENDIF
L_HPOS=L_HPOS+L_列寬+L_GAP
SELECT (L_TMP)
ENDSCAN
USE
SELECT (報表文件名)
添加縱線()
L_報表寬度=L_HPOS+WIDTH
*添加橫線
HPOS=0
HEIGHT=104.167
WIDTH=L_報表寬度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_頁標頭區VPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_頁標頭區VPOS+L_頁標頭區高度
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_細節區VPOS+L_細節區高度
IF L_標題區高度#0
*拷貝一個標簽記錄并改造成報表標題記錄
LOCATE FOR OBJTYPE=5
SCATTER MEMV MEMO
L_標題寬度=LEN(M.報表標題)*L_字符寬度16
EXPR=["]+M.報表標題+["]
VPOS=1000
HPOS=MAX(0,(L_報表寬度-L_標題寬度)/2)
WIDTH=L_標題寬度
HEIGHT=2500
FONTSIZE=16
APPEND BLANK
GATHER MEMV MEMO
ENDIF
USE
SELECT (L_CA)
ERASE L_TMP+'.*'
WAIT CLEA
RETURN
PROCEDURE 添加縱線
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_頁標頭區VPOS,HPOS WITH L_HPOS
APPEND BLANK
GATHER MEMV MEMO
REPLACE VPOS WITH L_細節區VPOS,HPOS WITH L_HPOS,STRETCH WITH .T.
RETURN
? 如何在VFP中自動生成統計圖
主要是(_GENGRAPH)過程沒有發現,你參考微軟的ffc
就在vfp文件夾下,ffc文件夾下有一個graph.vcx.
? 怎樣用vfp生成.exe的文件
項目的代碼-程序里編兩個程序,
1、第一個命名為main,內容如下:
_screen.caption="成績統計程序注冊碼生成器"
*這里換成你想要在第一個表單上顯示的標題
_screen.icon=""
on shutdown do quit
do form main
*這里的main是你要最先運行的表單的名稱
read events
2、第二個命名為quit,內容如下:
clear events
quit
3、然后在main程序文件上點右鍵,選“設置主文件”
4、
5、打開最先運行的表單(以下稱首頁),在屬性里設置這樣幾個值
AlwaysOnTop .t.
AutoCenter .t.
BorderStyle 2-固定對話框
MaxButton .f.
ShowWindow 2-作為頂層表單
6、其它的分頁表單屬性,前面4個屬性值相同,最后一個改為“1-在頂層表單中”。
7、首頁的高(Height)和寬(width)在屬性中設大一點,如800*600,分頁的高和寬不要超過這個值就行。
8、選中首頁表單的方法程序中的Unload Event這一項,雙擊,在里面輸入quit這句命令。
9、關閉所有表單,打開項目設計器,點右邊的“連編”,然后勾選“選項”的前三項,“操作”為第三個“連編可執行文件”,最后點擊“確定”。
? vfp 菜單如何生成prg文件
用菜單設計器設計好的菜單后綴名為.mnx在VFP主窗口上面的主菜單里生成后綴名為.mpr,才可以使用
在命令窗口modify
command
菜單名.mpr
按回車就會出現菜單的命令代碼,可以修改,可以復制到prg文件直接做程序調用。
? 如何用vfp制作計算器
1、打開VFP,文件——新建——表單——新建立文件
lable1在屬性中設置它的caption屬性為"前項"
lable2在屬性中設置它的caption屬性為"后項"
lable3在屬性中設置它的caption屬性為"結果"
text1、text2、text3不用設置
optiongroup1的生成器:
command1在屬性中設置它的caption屬性為“計算”
command2在屬性中設置它的caption屬性為“退出”
3、接著將屬性擺好;
4、接著雙擊command1,輸入click代碼:
a=val(alltrim(thisform.text1.value)) &&去除前后空格,并將字符型數據轉換為數值型數據
b=val(alltrim(thisform.text2.value)) &&由于文本框默認的數據類型是字符型,所以要轉換
if thisform.optiongroup1.value=1
thisform.text3.value=a+b
endif
if thisform.optiongroup1.value=2
thisform.text3.value=a-b
endif
if thisform.optiongroup1.value=3
thisform.text3.value=a*b
endif
if thisform.optiongroup1.value=4
thisform.text3.value=a/b
endif
command2代碼:
thisform.release
5、運行,計算器就實現了。
? 請問怎么畫股票價格走勢線與收益線,或者有這方面的軟件能直接看嗎600031的能幫忙畫下么
你要是想知道股票怎么樣,每個人有每個人的方法,沒聽說過走勢線怎么畫。走勢線
是什么呢?你要是都不會畫,別人劃了你也看不明白。
我只說說我對這只股票的看法,技術圖形很好,長期均線多頭排列,大趨勢很好
短期均線交織,在60日均線站穩,并往上走,前期整理的很平,在布林線下軌反彈的
也不錯,后面有到上軌的欲望。
? VFP怎么生成exe格式并在沒有VF的環境下運行
問題描述的不清楚。
如果做好了程序只要打包生成exe,那需要用到
installshield
軟件;
如果是打包好了,程序運行有問題,你就要檢查你的程序邏輯,看看你的主程序文件的邏輯;
請描述清楚具體貼出代碼才好分析
? 可以用vfp程序獲取分析實時股票數據嗎
用vfp系統只能調用vfp系統的文件dbf ,也可以從其它文件調入數據, 因VFP系統屬于小型單單機數據庫,許多股票數據基本上網絡大型數據庫 如ms sql 數據庫系統互相不兼容,數據不識別。
? 可以用vfp程序獲取分析實時股票數據嗎
當然可以,只要對使用的編程軟件精通,用什么編程軟件都可以實現。